// Test case for Issue 1003
// https://github.com/typetools/checker-framework/issues/1003

// The fact that M extends Issue1003 is unimportant,
// I'm just doing this to wrap it up into a single class example:
class Issue1003<M extends Issue1003> {
    public int field = 0;

    public M getFoo() {
        throw new RuntimeException();
    }

    public static void methodMemberAccess() {
        // Use of raw generics:
        Issue1003 m = new Issue1003();
        // This version causes error but not exception:
        // Issue1003<Issue1003> m = new Issue1003<>();
        // Exception caused by this line:
        int x = m.getFoo().field;
    }
}
