package annotator.tests; public class ExtImpl { class Top<X, Y> {} interface Iface<A, B> {} interface Iface2<C, D> {} interface Iface3 {} interface Iface4<T, @org.checkerframework.checker.nullness.qual.NonNull S extends @org.checkerframework.checker.nullness.qual.NonNull @org.checkerframework.checker.nullness.qual.UnknownKeyFor Iface4<T, S>> {} class C1 extends @A Top<@B Object, @C String> implements @D Iface<@E Integer, @F String> {} class C2 implements @A Iface<@B String, @C Object>, @D Iface2<@E Object, @F Float> {} class C3 { class Iface3 implements annotator.tests.ExtImpl.Iface3 {} /* * the jaif file says that the simple name of * the return type in JVM format is * LIface3; */ @java.lang.SuppressWarnings({}) annotator.tests.ExtImpl.C3.Iface3 getI1() { return null; } /* * in this case, the jaif file uses the fully qualified name * for the return type * Lannotator.tests.ExtImpl.C3.Iface3; */ @java.lang.SuppressWarnings({}) annotator.tests.ExtImpl.C3.Iface3 getI2() { return null; } /* * the jaif file uses the simple name of the return type * LC3$Iface3; */ @java.lang.SuppressWarnings({}) Iface3 getI3() { return null; } /* * in the jaif file, the return type is Iface3 * (ambiguous: could be short for the interface * annotator.tests.ExtImpl.Iface3) */ @java.lang.SuppressWarnings({}) Iface3 getI4() { return null; } } }