code: public static IDataDecoder getDecoder(final String mimeType)
              throws ClassNotFoundException, IllegalAccessException,
              InstantiationException {
  
          populateCache();
  
          if (!cache.containsKey(mimeType)) {
              throw new ClassNotFoundException(
                      String.format("IDataDecoder for"
                              + " mimeType [%s] not found.", mimeType));
          }
  
          Class<? extends IDataDecoder> decoderClass = cache.get(mimeType);
  
          return decoderClass.newInstance();
      }
docs: Retrieve a decoder for a specified mime type.
  
  @param mimeType The mimetype to scan for.
  @return An instance of the decoder.
  @throws ClassNotFoundException Thrown when no decoder for a mimetype is
  found.
  @throws IllegalAccessException Thrown when the decoder's constructor is
  not accessible. Never thrown, as the
  service loader would throw it first.
  @throws InstantiationException Thrown when the decoder's constructor is
  not accessible. Never thrown, as the
  service loader would throw it first.