import org.checkerframework.framework.testchecker.util.*;

// TODO: the output have a "missing return statement"?
public class DeepOverrideBug {

  public static interface I {
    @Odd String interfaceMethod();

    String abstractMethod();
  }

  public abstract static class A {
    public abstract @Odd String abstractMethod();

    public abstract String interfaceMethod();
  }

  public abstract static class B extends A implements I {}

  public static class C extends B {
    // :: error: (override.return)
    public String interfaceMethod() { // should emit error
      return null;
    }

    // :: error: (override.return)
    public String abstractMethod() { // should emit error
      return null;
    }
  }
}
