Enclosing class vs Declaring class

¿Hay alguna circunstancia en la queClass.getDeclaringClass podría dar un resultado diferente deClass.getEnclosingClass?

Pensé que podría tener que ver con una subclase de la clase externa que crea una instancia de una clase interna que no se declaró como estática, pero no pude obtener una diferencia de esa manera:

public class Main {
  private static class StaticInnerClass {

  }

  private class MemberInnerClass {

  }

  private static class ChildClass extends Main {

  }

  public MemberInnerClass getMemberInnerClassInstance() {
    return new MemberInnerClass();
  }

  public static void main(String[] args) {
    System.out.println( StaticInnerClass.class.getDeclaringClass() );
    System.out.println( StaticInnerClass.class.getEnclosingClass() );
    System.out.println( MemberInnerClass.class.getDeclaringClass() );
    System.out.println( MemberInnerClass.class.getEnclosingClass() );
    System.out.println( new ChildClass().getMemberInnerClassInstance().getClass().getEnclosingClass() );
    System.out.println( new ChildClass().getMemberInnerClassInstance().getClass().getDeclaringClass() );
  }
}

Salida

class Main
class Main
class Main
class Main
class Main
class Main

Respuestas a la pregunta(2)

Su respuesta a la pregunta