@Override
    /**
     * makes the given little man perform this conditional action. When the
     * little man is done performing the action, the test resets itself.
     *
     * @return whether this conditional action is completed. The action is
     * completed if the test has passed and the action has been completed, or
     * the test has failed.
     */
    public boolean doAction(GenericLittleMan<?> littleMan) {
        switch (conditionalActionStep) {
            case GO_TO_TEST:
                goToTest(littleMan);
                return false;
            case DO_TEST:
                return doTest(littleMan);
            case DO_ACTION:
                return doConditionalAction(littleMan);
            default:
                throw new AssertionError();
        }
    }