@Nullable
  public String[] readData(
      @NotNull KotlinJvmBinaryClass kotlinClass, @NotNull KotlinClassHeader.Kind expectedKind) {
    KotlinClassHeader header = kotlinClass.getClassHeader();
    if (!header.getIsCompatibleAbiVersion()) {
      errorReporter.reportIncompatibleAbiVersion(
          kotlinClass.getClassId(), kotlinClass.getLocation(), header.getVersion());
    } else if (header.getKind() == expectedKind) {
      return header.getAnnotationData();
    }

    return null;
  }
 @Nullable
 public ClassDescriptor resolveClass(@NotNull KotlinJvmBinaryClass kotlinClass) {
   String[] data = readData(kotlinClass, CLASS);
   if (data != null) {
     return components
         .getClassDeserializer()
         .deserializeClass(kotlinClass.getClassId(), JvmProtoBufUtil.readClassDataFrom(data));
   }
   return null;
 }
 @Nullable
 public ClassDescriptor resolveClass(@NotNull KotlinJvmBinaryClass kotlinClass) {
   String[] data = readData(kotlinClass, CLASS);
   if (data != null) {
     ClassData classData = JvmProtoBufUtil.readClassDataFrom(data);
     KotlinJvmBinarySourceElement sourceElement = new KotlinJvmBinarySourceElement(kotlinClass);
     ClassDataProvider classDataProvider = new ClassDataProvider(classData, sourceElement);
     return components
         .getClassDeserializer()
         .deserializeClass(kotlinClass.getClassId(), classDataProvider);
   }
   return null;
 }