code: public static TypeSignature ofContainer(String containerTypeName,
                                              Iterable<TypeSignature> elementTypeSignatures) {
          checkBaseTypeName(containerTypeName, "containerTypeName");
          requireNonNull(elementTypeSignatures, "elementTypeSignatures");
          final List<TypeSignature> elementTypeSignaturesCopy = ImmutableList.copyOf(elementTypeSignatures);
          checkArgument(!elementTypeSignaturesCopy.isEmpty(), "elementTypeSignatures is empty.");
          return new TypeSignature(containerTypeName, elementTypeSignaturesCopy);
      }
docs: Creates a new container type with the specified container type name and the type signatures of the
  elements it contains.
  
  @throws IllegalArgumentException if the specified type name is not valid or
  {@code elementTypeSignatures} is empty.