code: public StateConfiguration<S, T> permitIf(T trigger, S destinationState, FuncBoolean guard) {
          enforceNotIdentityTransition(destinationState);
          return publicPermitIf(trigger, destinationState, guard);
      }
docs: Accept the specified trigger and transition to the destination state if guard is true
  
  @param trigger          The accepted trigger
  @param destinationState The state that the trigger will cause a transition to
  @param guard            Function that must return true in order for the trigger to be accepted
  @return The receiver