No, you can generate the context as normal. Just use EventContext in the event to support a dynamic number of context values (ie 0 or 1 values).
Eg: <t:eventlink event="myEvent" context="prop:myContext">...</t:eventlink> public Object getMyContext() { if (someObject == null) return Collections.emptyList(); return someObject; } void onMyEvent(EventContext ec) { if (ec.getCount() == 0) // no context else if (ec.getCount() == 1) { // context provided Foo myFoo = ec.get(Foo.class, 0); doStuff(foo); } else { throw new Exception(); } }