@Override
    public Result evaluate(TaskRequest taskRequest, VirtualMachineCurrentState targetVM, TaskTrackerState taskTrackerState) {
    """
	Determines whether the prospective host already has tasks either running on it or assigned to be run on
	it, and returns a false Result if either of those things is the case.
	
	@param taskRequest      describes the task to be considered for assignment to the host
	@param targetVM         describes the host to be considered for accepting the task
	@param taskTrackerState describes the state of tasks assigned to or running on hosts throughout the
	system
	@return an unsuccessful Result if the target already has running tasks or assigned tasks, or a successful
	Result otherwise
    """
        Collection<TaskRequest> runningTasks = targetVM.getRunningTasks();
        if(runningTasks!=null && !runningTasks.isEmpty())
            return new Result(false, "Already has " + runningTasks.size() + " tasks running on it");
        Collection<TaskAssignmentResult> tasksCurrentlyAssigned = targetVM.getTasksCurrentlyAssigned();
        if(tasksCurrentlyAssigned!=null && !tasksCurrentlyAssigned.isEmpty())
            return new Result(false, "Already has " + tasksCurrentlyAssigned.size() + " assigned on it");
        return new Result(true, "");
    }
@Override
    public Result evaluate(TaskRequest taskRequest, VirtualMachineCurrentState targetVM, TaskTrackerState taskTrackerState) {
        Collection<TaskRequest> runningTasks = targetVM.getRunningTasks();
        if(runningTasks!=null && !runningTasks.isEmpty())
            return new Result(false, "Already has " + runningTasks.size() + " tasks running on it");
        Collection<TaskAssignmentResult> tasksCurrentlyAssigned = targetVM.getTasksCurrentlyAssigned();
        if(tasksCurrentlyAssigned!=null && !tasksCurrentlyAssigned.isEmpty())
            return new Result(false, "Already has " + tasksCurrentlyAssigned.size() + " assigned on it");
        return new Result(true, "");
    }
@ Override public Result evaluate ( TaskRequest taskRequest , VirtualMachineCurrentState targetVM , TaskTrackerState taskTrackerState ) { Collection < TaskRequest > runningTasks = targetVM . getRunningTasks ( ) ; if ( runningTasks != null && ! runningTasks . isEmpty ( ) ) return new Result ( false , "Already has " + runningTasks . size ( ) + " tasks running on it" ) ; Collection < TaskAssignmentResult > tasksCurrentlyAssigned = targetVM . getTasksCurrentlyAssigned ( ) ; if ( tasksCurrentlyAssigned != null && ! tasksCurrentlyAssigned . isEmpty ( ) ) return new Result ( false , "Already has " + tasksCurrentlyAssigned . size ( ) + " assigned on it" ) ; return new Result ( true , "" ) ; }
Determines whether the prospective host already has tasks either running on it or assigned to be run on
it, and returns a false Result if either of those things is the case.

@param taskRequest      describes the task to be considered for assignment to the host
@param targetVM         describes the host to be considered for accepting the task
@param taskTrackerState describes the state of tasks assigned to or running on hosts throughout the
system
@return an unsuccessful Result if the target already has running tasks or assigned tasks, or a successful
Result otherwise
Determines whether the prospective host already has tasks either running on it or assigned to be run on it and returns a false Result if either of those things is the case .