code: public static <T extends Assignable> T create(final Class<T> type, final String archiveName)
          throws IllegalArgumentException {
          // Precondition checks
          if (type == null) {
              throw new IllegalArgumentException("Type must be specified");
          }
          if (archiveName == null || archiveName.length() == 0) {
              throw new IllegalArgumentException("ArchiveName must be specified");
          }
  
          // Delegate to the default domain's archive factory for creation
          return ShrinkWrap.getDefaultDomain().getArchiveFactory().create(type, archiveName);
      }
docs: Creates a new archive of the specified type. The archive will be be backed by the default {@link Configuration}.
  Invoking this method is functionally equivalent to calling {@link ArchiveFactory#create(Class, String)} upon
  {@link Domain#getArchiveFactory()} upon the domain returned by {@link ShrinkWrap#getDefaultDomain()}.
  
  @param type
  The type of the archive e.g. {@link WebArchive}
  @param archiveName
  The name of the archive
  @return An {@link Assignable} archive base
  @throws IllegalArgumentException
  either argument is not specified