code: public ProcessorGraphForkJoinTask createTask(@Nonnull final Values values) {
          StringBuilder missingAttributes = new StringBuilder();
          final Multimap<String, Processor> requiredAttributes = getAllRequiredAttributes();
          for (String attribute: requiredAttributes.keySet()) {
              if (!values.containsKey(attribute)) {
                  missingAttributes.append("\n\t* ").append(attribute).append(" <- ")
                          .append(requiredAttributes.get(attribute));
              }
          }
  
          if (missingAttributes.length() > 0) {
              throw new IllegalArgumentException("It has been found that one or more required attributes are " +
                                                         "missing from the values object:" + missingAttributes +
                                                         "\n");
          }
  
          return new ProcessorGraphForkJoinTask(values);
      }
docs: Create a ForkJoinTask for running in a fork join pool.
  
  @param values the values to use for getting the required inputs of the processor and putting
  the output in.
  @return a task ready to be submitted to a fork join pool.