import org.checkerframework.common.reflection.qual.*;

package java.lang;

class Class<T> {
    @ForName
    static Class<?> forName(String name);

    @GetMethod
    Method getMethod(String name, Class<?>... parameterTypes);

    @GetMethod
    Method getDeclaredMethod(String name, Class<?>... parameterTypes);

    @GetConstructor
    Constructor<T> getConstructor(Class<?>... parameterTypes);
}

class ClassLoader {
    @ForName
    static Class<?> loadClass(String name);

    @ForName
    static Class<?> loadClass(String name, boolean resolve);
}

class Object {
    @GetClass
    Class<?> getClass();
}

package java.lang.reflect;

class Method {
    @Invoke
    Object invoke(Object obj, Object... args);
}

class Constructor<T> {
    @NewInstance
    T newInstance(Object... args);
}
