public class ReturnOfInnerClass {

  public static Object zero() {
    return new Object() {};
  }

  public Object one() {
    <warning descr="Return of instance of anonymous class">return</warning> new Object() {};
  }

  public Object two() {
    class A {}
    <warning descr="Return of instance of local class 'A'">return</warning> new A();
  }

  class B {}
  public Object three() {
    <warning descr="Return of instance of non-static inner class 'B'">return</warning> new B();
  }

  private Object four() {
    return new B();
  }

  protected Object five() {
    return new B();
  }

  Object six() {
    return new B();
  }
}