ImmutableList<Executable> kotlinConstructorsIn(AnnotationMirror metadata, TypeElement ofClass) {
    if (!KOTLIN_METADATA_AVAILABLE) {
      if (!warnedAboutMissingMetadataApi) {
        warnedAboutMissingMetadataApi = true;
        errorReporter.reportWarning(
            ofClass,
            "[AutoBuilderNoMetadataApi] The Kotlin metadata API (kotlinx.metadata or"
                + " kotlin.metadata) is not available. You may need to add a dependency on"
                + " org.jetbrains.kotlin:kotlin-metadata-jvm.");
      }
      return ImmutableList.of();
    }
    try {
      return kotlinConstructorsFromReflection(metadata, ofClass);
    } catch (InvocationTargetException e) {
      throwIfUnchecked(e.getCause());
      // We don't expect the Kotlin API to throw checked exceptions.
      throw new LinkageError(e.getMessage(), e);
    } catch (ReflectiveOperationException e) {
      throw new LinkageError(e.getMessage(), e);
    }
  }
Use Kotlin reflection to build {@link Executable} instances for the constructors in {@code
ofClass} that include information about which parameters have default values.

@param metadata the {@code @kotlin.Metadata} annotation on {@code ofClass}
@param ofClass the class whose constructors should be returned
value/src/main/java/com/google/auto/value/processor/KotlinMetadata.java