public StateConfiguration<S, T> permitIf(T trigger, S destinationState, FuncBoolean guard) {
        enforceNotIdentityTransition(destinationState);
        return publicPermitIf(trigger, destinationState, guard);
    }
public StateConfiguration<S, T> permitIf(T trigger, S destinationState, FuncBoolean guard) {
        enforceNotIdentityTransition(destinationState);
        return publicPermitIf(trigger, destinationState, guard);
    }
public StateConfiguration < S , T > permitIf ( T trigger , S destinationState , FuncBoolean guard ) { enforceNotIdentityTransition ( destinationState ) ; return publicPermitIf ( trigger , destinationState , guard ) ; }
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
Accept the specified trigger and transition to the destination state if guard is true