public class C {
    public  static sealed class Base                permits PrivateImpl, PublicImpl { }
    private static sealed class PrivateImpl extends Base permits PublicImpl1, PublicImpl2 { }

    public static final      class PublicImpl   extends Base { }
    public static final      class PublicImpl1  extends PrivateImpl { }
    public static non-sealed class PublicImpl2  extends PrivateImpl { }
    public static final      class PublicImpl2a extends PublicImpl2 { }
 
}
