code: private Object processArgument(final Object argument) {
      final Object returnObject;
      if (argument instanceof Closure) { returnObject = processClosure((Closure<?>) argument); }
      else {
        final String errorReport = "depends called with an argument (" + argument + ") that is not a known target or list of targets.";
        Object theArgument = argument;
        if (theArgument instanceof GString) { theArgument = theArgument.toString(); }
        if (theArgument instanceof String) {
          final Object entry = binding.getVariable((String) theArgument);
          if ((entry != null) && (entry instanceof Closure)) { returnObject = processClosure((Closure<?>) entry); }
          else { throw new RuntimeException(errorReport); }
        }
        else { throw new RuntimeException(errorReport); }
      }
      return returnObject;
    }
docs: Process the argument to a {@code depends} call.  If the parameter is a {@code Closure} just
  process it. If it is a {@code String} then do a lookup for the {@code Closure} in the
  binding, and if found process it.
  
  @param argument The argument.
  @return The result of the {@code Closure}.