code: AbstractCommandExecution findExecutor( AbstractCommandInstruction instr ) {
  
  		AbstractCommandExecution result = null;
  
  		if( RenameCommandInstruction.class.equals( instr.getClass()))
  			result = new RenameCommandExecution((RenameCommandInstruction) instr);
  
  		else if( ReplicateCommandInstruction.class.equals( instr.getClass()))
  			result = new ReplicateCommandExecution((ReplicateCommandInstruction) instr, this.manager );
  
  		else if( AssociateTargetCommandInstruction.class.equals( instr.getClass()))
  			result = new AssociateTargetCommandExecution((AssociateTargetCommandInstruction) instr, this.manager );
  
  		else if( BulkCommandInstructions.class.equals( instr.getClass()))
  			result = new BulkCommandExecution((BulkCommandInstructions) instr, this.manager );
  
  		else if( ChangeStateCommandInstruction.class.equals( instr.getClass()))
  			result = new ChangeStateCommandExecution((ChangeStateCommandInstruction) instr, this.manager );
  
  		else if( CreateInstanceCommandInstruction.class.equals( instr.getClass()))
  			result = new CreateInstanceCommandExecution((CreateInstanceCommandInstruction) instr, this.manager );
  
  		else if( EmailCommandInstruction.class.equals( instr.getClass()))
  			result = new EmailCommandExecution((EmailCommandInstruction) instr, this.manager );
  
  		else if( WriteCommandInstruction.class.equals( instr.getClass()))
  			result = new WriteCommandExecution((WriteCommandInstruction) instr);
  
  		else if( AppendCommandInstruction.class.equals( instr.getClass()))
  			result = new AppendCommandExecution((AppendCommandInstruction) instr);
  
  		else if( ExecuteCommandInstruction.class.equals( instr.getClass()))
  			result = new ExecuteCommandExecution((ExecuteCommandInstruction) instr, this.manager );
  
  		return result;
  	}
docs: Finds the right executor for an instruction.
  @param instr a non-null instruction
  @return an executor, or null if the instruction is not executable