code: private void checkStateException(String method, EnumSet<State> allowedStates) {
      if (!allowedStates.contains(state)) {
        String msg = "Can't call " + method + " from state " + state;
        switch (invalidStateBehavior) {
        case SILENT:
          break;
        case EMULATE:
          throw new IllegalStateException(msg);
        case ASSERT:
          throw new AssertionError(msg);
        }
      }
    }
docs: Checks states for methods that synchronously throw an exception when
  invoked in an illegal state. This method will likewise throw an
  {@link IllegalArgumentException} if it determines that the method has been
  invoked from a disallowed state, or else it will generate an assertion if
  {@link #setAssertOnError assertOnError} is set.
  
  @param method
  the name of the method being tested.
  @param allowedStates
  the states that this method is allowed to be called from.
  @see #setAssertOnError
  @see #checkStateLog(String, EnumSet)
  @see #checkStateError(String, EnumSet)