public StateConfiguration<S, T> permitDynamicIf(T trigger, final Func<S> destinationStateSelector, FuncBoolean guard) {
        assert destinationStateSelector != null : DESTINATION_STATE_SELECTOR_IS_NULL;
        return publicPermitDynamicIf(trigger, new Func2<Object[], S>() {
            @Override
            public S call(Object[] arg0) {
                return destinationStateSelector.call();
            }
        }, guard, NO_ACTION_N);
    }
public StateConfiguration<S, T> permitDynamicIf(T trigger, final Func<S> destinationStateSelector, FuncBoolean guard) {
        assert destinationStateSelector != null : DESTINATION_STATE_SELECTOR_IS_NULL;
        return publicPermitDynamicIf(trigger, new Func2<Object[], S>() {
            @Override
            public S call(Object[] arg0) {
                return destinationStateSelector.call();
            }
        }, guard, NO_ACTION_N);
    }
public StateConfiguration < S , T > permitDynamicIf ( T trigger , final Func < S > destinationStateSelector , FuncBoolean guard ) { assert destinationStateSelector != null : DESTINATION_STATE_SELECTOR_IS_NULL ; return publicPermitDynamicIf ( trigger , new Func2 < Object [ ] , S > ( ) { @ Override public S call ( Object [ ] arg0 ) { return destinationStateSelector . call ( ) ; } } , guard , NO_ACTION_N ) ; }
Accept the specified trigger and transition to the destination state, calculated dynamically by the supplied
function

@param trigger                  The accepted trigger
@param destinationStateSelector Function to calculate 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 calculated dynamically by the supplied function