if (log.isDebugEnabled()) log.debug(action.dump());
    public synchronized void execute() {		Iterator iter = rawActuatorDataSub.getChangedCollection().iterator();	while (iter.hasNext()) {	    SampleRawActuatorData data = (SampleRawActuatorData)iter.next();	    if (data != null) {		int command = data.getCommand();		switch (command) {		case SampleRawActuatorData.SET_VALUES_OFFERED:		    Set valuesOffered = data.getValuesOffered();		    try {			action.setValuesOffered(valuesOffered);			blackboard.publishChange(action);			if (log.isDebugEnabled()) 			    log.debug(action + " changed.");		    } catch (IllegalValueException e) {			log.error("Illegal value in valuesOffered = "+valuesOffered,e);			    }		    break;		case SampleRawActuatorData.START:		    Object actionValue = data.getActionValue();		    try {			action.start(actionValue);			blackboard.publishChange(action);			if (log.isDebugEnabled()) 			    log.debug(action + " changed.");		    } catch (IllegalValueException e) {			log.error("Illegal actionValue = "+actionValue,e);			    }			    break;		case SampleRawActuatorData.STOP:		    String codeStr = data.getCompletionCode();                    Action.CompletionCode code = (Action.CompletionCode)codeTbl.get(codeStr);		    try {			action.stop(code);			blackboard.publishChange(action);			if (log.isDebugEnabled()) 			    log.debug(action + " changed.");		    } catch (IllegalValueException e) {			log.error("Illegal completion code = "+code,e);			    } catch (NoStartedActionException e) {			log.error("stop called before start",e);			    }		    		}	    }	}	        iter = actionSub.getChangedCollection().iterator();	while (iter.hasNext()) {	    SampleAction action = (SampleAction)iter.next();	    if (action != null) {                data.setPermittedValues(action.getPermittedValues());                data.setCommand(SampleRawActuatorData.SET_PERMITTED_VALUES);                blackboard.publishChange(data);		if (log.isDebugEnabled()) 		    log.debug(data + " changed.");	    }	}            }