code: static AnalysisResult analyse(
        Class<?> klass, Constructor<?> constructor) throws IOException {
      Class<?>[] parameterTypes = constructor.getParameterTypes();
      InputStream in = klass.getResourceAsStream("/" + klass.getName().replace('.', '/') + ".class");
      if (in == null) {
        throw new IllegalArgumentException(format("can not find bytecode for %s", klass));
      }
      return analyse(in, klass.getName().replace('.', '/'),
          klass.getSuperclass().getName().replace('.', '/'),
          parameterTypes);
    }
docs: Produces an assignment or field names to values or fails.
  @throws IllegalConstructorException