$ javac src/Reflect.java && java Reflect     (21.0.10+7-Ubuntu-124.04)
Shape: sealed, permits [Circle, Poly, Custom]
Circle: final
Poly: sealed, permits [Tri, Quad]
Tri: final
Quad: final
Custom: open (non-sealed or plain)
Hexagon: open (non-sealed or plain)
circle triangle quad custom:Hexagon

$ javac src/Reflect.java && java Reflect     (25.0.4.1+1-LTS)
Shape: sealed, permits [Circle, Poly, Custom]
Circle: final
Poly: sealed, permits [Tri, Quad]
Tri: final
Quad: final
Custom: open (non-sealed or plain)
Hexagon: open (non-sealed or plain)
circle triangle quad custom:Hexagon

$ javac src/Reflect.java && java Reflect     (27+35)
Shape: sealed, permits [Circle, Poly, Custom]
Circle: final
Poly: sealed, permits [Tri, Quad]
Tri: final
Quad: final
Custom: open (non-sealed or plain)
Hexagon: open (non-sealed or plain)
circle triangle quad custom:Hexagon

$ javac src/ImplicitPermits.java && java ImplicitPermits     (21.0.10+7-Ubuntu-124.04)
[ImplicitPermits$A, ImplicitPermits$B]

$ javac src/ImplicitPermits.java && java ImplicitPermits     (25.0.4.1+1-LTS)
[ImplicitPermits$A, ImplicitPermits$B]

$ javac src/ImplicitPermits.java && java ImplicitPermits     (27+35)
[ImplicitPermits$A, ImplicitPermits$B]

$ javap -v -cp . 'PaymentDemo$Payment' | grep -A3 PermittedSubclasses     (25.0.4.1+1-LTS)
PermittedSubclasses:
  PaymentDemo$Card
  PaymentDemo$Upi
  PaymentDemo$NetBanking
