code: public static void register(Class<?> c) {
      try {
        ZipExtraField ze = (ZipExtraField) c.newInstance();
        implementations.put(ze.getHeaderId(), c);
      }
      catch (ClassCastException cc) {
        throw new RuntimeException(c + " doesn\'t implement ZipExtraField");
      }
      catch (InstantiationException ie) {
        throw new RuntimeException(c + " is not a concrete class");
      }
      catch (IllegalAccessException ie) {
        throw new RuntimeException(c + "\'s no-arg constructor is not public");
      }
    }
docs: Register a ZipExtraField implementation.
  
  <p>
  The given class must have a no-arg constructor and implement the {@link ZipExtraField ZipExtraField interface}.
  </p>
  
  @param c the class to register
  
  @since 1.1