docs: @Requires("ClassName.isBinaryName(className)")
    protected ContractAnalyzer analyze(String className)
        throws IOException {
      /* Skip helper classes. */
      if (className.endsWith(JavaUtils.HELPER_CLASS_SUFFIX)) {
        return null;
      }
  
      /* Skip interfaces. */
      String helperFileName = className + JavaUtils.HELPER_CLASS_SUFFIX
          + Kind.CLASS.extension;
      if (JavaUtils.resourceExists(loader, helperFileName)) {
        return null;
      }
  
      /* Try to get contracts class file. */
      InputStream contractStream =
          JavaUtils.getContractClassInputStream(loader, className);
      if (contractStream == null) {
        return null;
      }
  
      return extractContracts(new ClassReader(contractStream));
    }