code: private Object processClosure(final Closure<?> closure) {
      if (! methodsInvoked.contains(closure)) {
        methodsInvoked.add(closure);
        return closure.call();
      }
      return null;
    }
docs: Execute a {@code Closure} only if it hasn't been executed previously.  If it is executed, record
  the execution.  Only used for processing a {@code depends} call.
  
  @param closure The {@code Closure} to potentially call.
  @return the result of the {@code Closure} call, or {@code null} if the closure was not
  called.