code: public static StringIdentifierGenerator getInstance(Collection generators) {
          if (generators == null) {
              throw new IllegalArgumentException(
                      "Generator collection must not be null");
          }
          if (generators.size() == 0) {
              throw new IllegalArgumentException(
                      "Generator collection must not be empty");
          }
          StringIdentifierGenerator[] generatorsCopy = 
              new StringIdentifierGenerator[generators.size()];
          int i = 0;
          Iterator it = generators.iterator();
          while (it.hasNext()) {
              generatorsCopy[i] = (StringIdentifierGenerator) it.next();
              if (generatorsCopy[i] == null) {
                  throw new IllegalArgumentException(
                          "Generators must not be null");
              }
              i++;
          }
          return new CompositeIdentifierGenerator(generatorsCopy);
      }
docs: Create a new <code>CompositeIdentifierGenerator</code> that concatenates
  the results of the provided collection of generators. Order is
  determined by the <code>iterator()</code> method on the collection.
  
  @param generators a collection of string identifier generators to
  concatenate
  @return the composite identifier generator
  @throws IllegalArgumentException if the generators collection is null,
  empty, or contains nulls