code: public EventBus emit(Enum<?> event, Object... args) {
          return _emitWithOnceBus(eventContext(event, args));
      }
docs: Emit an enum event with parameters supplied.
  
  This will invoke all {@link SimpleEventListener} bound to the specific
  enum value and all {@link SimpleEventListener} bound to the enum class
  given the listeners has the matching argument list.
  
  For example, given the following enum definition:
  
  ```java
  public enum UserActivity {LOGIN, LOGOUT}
  ```
  
  We have the following simple event listener methods:
  
  ```java
  {@literal @}OnEvent
  public void handleUserActivity(UserActivity, User user) {...}
  
  {@literal @}OnUserActivity(UserActivity.LOGIN)
  public void logUserLogin(User user, long timestamp) {...}
  
  {@literal @}OnUserActivity(UserActivity.LOGOUT)
  public void logUserLogout(User user) {...}
  ```
  
  The following code will invoke `logUserLogin` method:
  
  ```java
  User user = ...;
  eventBus.emit(UserActivity.LOGIN, user, System.currentTimeMills());
  ```
  
  The `handleUserActivity` is not invoked because
  
  * The method parameter `(UserActivity, User, long)` does not match the declared argument list `(UserActivity, User)`
  
  While the following code will invoke both `handleUserActivity` and `logUserLogout` methods:
  
  ```java
  User user = ...;
  eventBus.emit(UserActivity.LOGOUT, user);
  ```
  
  The `logUserLogin` method will not be invoked because
  
  1. the method is bound to `UserActivity.LOGIN` enum value specifically, while `LOGOUT` is triggered
  2. the method has a `long timestamp` in the argument list and it is not passed to `eventBus.emit`
  
  @param event
  the target event
  @param args
  the arguments passed in
  @see SimpleEventListener