WARNING: The dependencies for the following 1 jar(s) are not complete.
      1.third_party/bazel/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/libtestdata_client.jar
The details are listed below:
Missing java.io.PrintStream
Missing java.lang.Class
Missing java.lang.Enum
Missing java.lang.Exception
Missing java.lang.Integer
Missing java.lang.Object
Missing java.lang.String
Missing java.lang.SuppressWarnings
Missing java.lang.System
Missing java.lang.annotation.Annotation
Missing java.lang.annotation.ElementType
Missing java.lang.annotation.Retention
Missing java.lang.annotation.RetentionPolicy
Missing java.lang.annotation.Target
Missing java.lang.invoke.CallSite
Missing java.lang.invoke.LambdaMetafactory
Missing java.lang.invoke.MethodHandle
Missing java.lang.invoke.MethodHandles$Lookup
Missing java.lang.invoke.MethodType
Missing java.util.Objects
Indirectly missing class java.lang.Enum. Referenced by:
    com.google.devtools.build.importdeps.testdata.Client$EnumTest (in testdata:testdata_client)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$AnnotationFlag (in testdata:testdata_lib_LibraryAnnotations)
Indirectly missing class java.lang.Exception. Referenced by:
    com.google.devtools.build.importdeps.testdata.LibraryException (in testdata:testdata_lib_LibraryException)
Indirectly missing class java.lang.Object. Referenced by:
    com.google.devtools.build.importdeps.testdata.Client$InnerClassWithSyntheticConstructorParam (in testdata:testdata_client)
    com.google.devtools.build.importdeps.testdata.Library (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class1 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class11 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class2 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class3 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class4 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class5 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class6 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class7 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class8 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.Library$Class9 (in testdata:testdata_lib_Library)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$AnnotationAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ClassAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ConstructorAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$FieldAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$MethodAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ParameterAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$TypeAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryInterface (in testdata:testdata_lib_LibraryInterface)
    com.google.devtools.build.importdeps.testdata.LibraryInterface$Func (in testdata:testdata_lib_LibraryInterface)
    com.google.devtools.build.importdeps.testdata.LibraryInterface$InterfaceBar (in testdata:testdata_lib_LibraryInterface)
    com.google.devtools.build.importdeps.testdata.LibraryInterface$InterfaceFoo (in testdata:testdata_lib_LibraryInterface)
    com.google.devtools.build.importdeps.testdata.LibraryInterface$One (in testdata:testdata_lib_LibraryInterface)
    com.google.devtools.build.importdeps.testdata.LibraryInterface$Two (in testdata:testdata_lib_LibraryInterface)
Indirectly missing class java.lang.annotation.Annotation. Referenced by:
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$AnnotationAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ClassAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ConstructorAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$FieldAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$MethodAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$ParameterAnnotation (in testdata:testdata_lib_LibraryAnnotations)
    com.google.devtools.build.importdeps.testdata.LibraryAnnotations$TypeAnnotation (in testdata:testdata_lib_LibraryAnnotations)
Missing member 'name' in class com.google.devtools.build.importdeps.testdata.Client$EnumTest : name=name, descriptor=()Ljava/lang/String;
Missing member 'ordinal' in class com.google.devtools.build.importdeps.testdata.Client$EnumTest : name=ordinal, descriptor=()I
The class hierarchies of the classes with missing members:
    com.google.devtools.build.importdeps.testdata.Client$EnumTest (in testdata:testdata_client)
===Total===
missing=20
incomplete=29
missing_members=2
