code: public EventBus emit(EventObject event, Object... args) {
          return _emitWithOnceBus(eventContext(event, args));
      }
docs: Emit an event object with parameters.
  
  This will invoke all {@link SimpleEventListener} bound to the event object
  class given the listeners has the matching argument list.
  
  If there is no parameter passed in, i.e. `args.length == 0`, then it will
  also invoke all the {@link ActEventListener} bound to the event class.
  
  For example, suppose we have the following Event defined:
  
  ```java
  public class UserActivityEvent extends ActEvent<User> {
  public UserActivityEvent(User user) {super(user);}
  }
  ```
  
  And we have the following event handler defined:
  
  ```java
  {@literal @}OnEvent
  public void logUserLogin(UserActivityEvent event, long timestamp) {...}
  
  {@literal @}OnEvent
  public void checkDuplicateLoginAttempts(UserActivityEvent, Object... args) {...}
  
  {@literal @}OnEvent
  public void foo(UserActivityEvent event) {...}
  ```
  
  The following code will invoke `logUserLogin` and `checkDuplicateLoginAttempts` methods:
  
  ```java
  User user = ...;
  eventBus.emit(new UserActivityEvent(user), System.currentTimeMills());
  ```
  
  The `foo(UserActivityEvent)` will not invoked because:
  
  * The parameter list `(UserActivityEvent, long)` does not match the declared
  argument list `(UserActivityEvent)`. Here the `String` in the parameter
  list is taken out because it is used to indicate the event, instead of being
  passing through to the event handler method.
  * The method `checkDuplicateLoginAttempts(UserActivityEvent, Object ...)` will
  be invoked because it declares a varargs typed arguments, meaning it matches
  any parameters passed in.
  
  @param event
  the target event
  @param args
  the arguments passed in
  @see SimpleEventListener