code: public static Artifact process(byte[] bytes, String fileName,
              Boolean knownTypesOnly) {
          String fileType = Processor.getFileType(fileName);
          if (!knownTypesOnly
                  || (knownTypesOnly && Processor.isKnownType(fileType))) {
              // Only handle types we know about eg: .class .jar
              Class<?> cls = Processor.getProcessor(fileType);
  
              if (AbstractFile.class.isAssignableFrom(cls)) {
                  try {
                      // TOOD: Maybe find a better way of doing this.
                      Constructor<?> ctor;
                      ctor = cls.getConstructor(byte[].class, String.class);
                      Object object;
                      object = ctor.newInstance(new Object[] { bytes, fileName });
                      return ((FingerprintInterface) object).getRecord();
                  } catch (NoSuchMethodException e) {
                  } catch (SecurityException e) {
                  } catch (InstantiationException e) {
                  } catch (IllegalAccessException e) {
                  } catch (IllegalArgumentException e) {
                  } catch (InvocationTargetException e) {
                  } catch (Exception e) {
                  }
              }
  
          }
          return null;
      }
docs: Process the given file (as bytes) and return the information record.
  
  @param bytes
  The file to process as a byte array.
  @param fileName
  The name of the file being processed.
  @param knownTypesOnly
  If set, file types known to the class are only processed. If
  set to <code>false</code> and a class is not defined
  explicitely for this type, {@link File} class will be used to
  produce the {@link Artifact}.
  @return Information record of type {@link Artifact}