code: public static List<List<Argument>> sort(List<Argument> args) {
          int i;
          int max;
          List<List<Argument>> result;
          List<RelatedArgument> remaining;    // List of RelatedArguments
          List<RelatedArgument> heads;   // List of RelatedArguments
  
          result = new ArrayList<List<Argument>>();
          remaining = createRelatedArgs(args);
          while (true) {
              max = remaining.size();
              if (max == 0) {
                  return result;
              }
              heads = new ArrayList<RelatedArgument>();
              for (i = 0; i < max; i++) {
                  addHead(heads, remaining.get(i));
              }
              remaining.clear();
              result.add(separate(heads, remaining));
          }
      }
docs: Returns the sorted list of lists of arguments.
  
  @param args   normal argument, not related arguments