// Contains assumptions about reflection. In particular, this
// makes the results of reflection the default (i.e. bottom) type
// in the Must Call type system. This choice is technically unsound:
// if e.g. the java.net.Socket constructor is invoked via reflection,
// then our checker will fail to track it. For usability, we found it
// much more useful to ignore these warnings than to issue them.
// If you wish to see warnings related to reflection, remove this stub file
// when running the checker.

// TODO: make this configurable so that users can easily turn this assumption off,
// e.g. via a command-line option. For now, keep this as a stub file rather than
// moving it to the annotated JDK so that re-compiling the checker without this
// assumption is easy if we ever need to do it.

package java.lang.reflect;

import org.checkerframework.checker.mustcall.qual.MustCall;

class Constructor<T> {
    @MustCall({}) T newInstance(Object... initArgs);
}
