// In practice AbstractEventData is just the abstract class.
// You must actually use one of the classes that extend it.
public Object handleEvent(EventFireTime fireTime, AbstractEventData data) {
Object foo = // something here;
data.setLastReturnValue(foo);
// do something
// The EventFireTime values describe in the documentation what the return
// value will do, or says nothing about it if the value is ignored
// If you don't intend to modify the return, always return data.getLastReturnValue();
return data.getLastReturnValue();
}