public boolean updateState(HashSet<String> pressedMappings, float time){
        ComboMoveState currentState = moveDef.getState(state);
        if (isStateSatisfied(pressedMappings, time, currentState)){
            state ++;
            moveTime = time;

            if (state >= moveDef.getNumStates()){
                finalState = false;
                state = 0;
                
                moveTime = time+0.5f; // this is for the reset of the debug string only.
                debugString += ", -CASTING " + moveDef.getMoveName().toUpperCase() + "-";
                return true;
            } 
            
            // the following for debug only.
            if (currentState.getPressedMappings().length > 0){
                if (!debugString.equals(""))
                    debugString += ", ";

                debugString += Arrays.toString(currentState.getPressedMappings()).replace(", ", "+");
            }

            if (moveDef.useFinalState() && state == moveDef.getNumStates() - 1){
                finalState = true;
            }
        }
        return false;
    }
Check if move needs to be executed. 
@param pressedMappings Which mappings are currently pressed
@param time Current time since start of app
@return True if move needs to be executed.
jme3-examples/src/main/java/jme3test/input/combomoves/ComboMoveExecution.java