// A test case from the CF's all-systems tests that fails with the MC checker unless an
// implicit upper bound is made explicit.

class CFAbstractValue<V extends CFAbstractValue<V>> {}

class CFAbstractAnalysis<V extends CFAbstractValue<V>> {}

class GenericAnnotatedTypeFactoryMustCallTest<
    Value extends CFAbstractValue<Value>, FlowAnalysis extends CFAbstractAnalysis<Value>> {

  protected FlowAnalysis createFlowAnalysis() {
    FlowAnalysis result = invokeConstructorFor();
    return result;
  }

  // The difference between this version of this test and the all-systems version is the "extends
  // Object" on the next line.
  public static <T extends Object> T invokeConstructorFor() {
    return null;
  }
}
