code: public boolean checkGuard (Task<E> control) {
  		// No guard to check
  		if (guard == null) return true;
  		
  		// Check the guard of the guard recursively
  		if (!guard.checkGuard(control)) return false;
  
  		// Use the tree's guard evaluator task to check the guard of this task
  		guard.setControl(control.tree.guardEvaluator);
  		guard.start();
  		guard.run();
  		switch (guard.getStatus()) {
  		case SUCCEEDED:
  			return true;
  		case FAILED:
  			return false;
  		default:
  			throw new IllegalStateException("Illegal guard status '" + guard.getStatus() + "'. Guards must either succeed or fail in one step.");
  		}
  	}
docs: Checks the guard of this task.
  @param control the parent task
  @return {@code true} if guard evaluation succeeds or there's no guard; {@code false} otherwise.
  @throws IllegalStateException if guard evaluation returns any status other than {@link Status#SUCCEEDED} and
  {@link Status#FAILED}.