$ javac -cp jackson/lib/* jackson/JsonPayment.java && java JsonPayment     (21.0.10+7-Ubuntu-124.04)
{"type":"card","last4":"4242","amount":500}  ->  Card[last4=4242, amount=500]  equal=true  fee=10
{"type":"upi","vpa":"ankur@bank","amount":500}  ->  Upi[vpa=ankur@bank, amount=500]  equal=true  fee=0
{"type":"netbanking","bank":"HDFC","amount":500}  ->  NetBanking[bank=HDFC, amount=500]  equal=true  fee=15
unknown type: InvalidTypeIdException: Could not resolve type id 'cheque' as a subtype of `JsonPayment$Payment`: known type ids = [card, netbanking, upi]

$ javac -cp jackson/lib/* jackson/JsonPayment.java && java JsonPayment     (25.0.4.1+1-LTS)
{"type":"card","last4":"4242","amount":500}  ->  Card[last4=4242, amount=500]  equal=true  fee=10
{"type":"upi","vpa":"ankur@bank","amount":500}  ->  Upi[vpa=ankur@bank, amount=500]  equal=true  fee=0
{"type":"netbanking","bank":"HDFC","amount":500}  ->  NetBanking[bank=HDFC, amount=500]  equal=true  fee=15
unknown type: InvalidTypeIdException: Could not resolve type id 'cheque' as a subtype of `JsonPayment$Payment`: known type ids = [card, netbanking, upi]

$ javac -cp jackson/lib/* jackson/JsonPayment.java && java JsonPayment     (27+35)
{"type":"card","last4":"4242","amount":500}  ->  Card[last4=4242, amount=500]  equal=true  fee=10
{"type":"upi","vpa":"ankur@bank","amount":500}  ->  Upi[vpa=ankur@bank, amount=500]  equal=true  fee=0
{"type":"netbanking","bank":"HDFC","amount":500}  ->  NetBanking[bank=HDFC, amount=500]  equal=true  fee=15
unknown type: InvalidTypeIdException: Could not resolve type id 'cheque' as a subtype of `JsonPayment$Payment`: known type ids = [card, netbanking, upi]

$ javac -cp jackson/lib/* jackson/JsonForgotten.java && java JsonForgotten     (21.0.10+7-Ubuntu-124.04)
write : {"type":"JsonForgotten$Wallet","amount":500}
read  : InvalidTypeIdException: Could not resolve type id 'wallet' as a subtype of `JsonForgotten$Payment`: known type ids = [card, upi]

$ javac -cp jackson/lib/* jackson/JsonForgotten.java && java JsonForgotten     (25.0.4.1+1-LTS)
write : {"type":"JsonForgotten$Wallet","amount":500}
read  : InvalidTypeIdException: Could not resolve type id 'wallet' as a subtype of `JsonForgotten$Payment`: known type ids = [card, upi]

$ javac -cp jackson/lib/* jackson/JsonForgotten.java && java JsonForgotten     (27+35)
write : {"type":"JsonForgotten$Wallet","amount":500}
read  : InvalidTypeIdException: Could not resolve type id 'wallet' as a subtype of `JsonForgotten$Payment`: known type ids = [card, upi]

$ javac -cp jackson/lib/* jackson/JsonNoSubTypes.java && java JsonNoSubTypes     (21.0.10+7-Ubuntu-124.04)
write         : {"type":"Card","amount":500}
sealed, Card  : Card[amount=500]
sealed, Upi   : Upi[amount=500]
sealed, Cheque: InvalidTypeIdException: Could not resolve type id 'Cheque' as a subtype of `JsonNoSubTypes$Payment`: known type ids = [Card, Upi]
plain, OpenCard: InvalidTypeIdException: Could not resolve type id 'OpenCard' as a subtype of `JsonNoSubTypes$OpenPayment`: known type ids = []

$ javac -cp jackson/lib/* jackson/JsonNoSubTypes.java && java JsonNoSubTypes     (25.0.4.1+1-LTS)
write         : {"type":"Card","amount":500}
sealed, Card  : Card[amount=500]
sealed, Upi   : Upi[amount=500]
sealed, Cheque: InvalidTypeIdException: Could not resolve type id 'Cheque' as a subtype of `JsonNoSubTypes$Payment`: known type ids = [Card, Upi]
plain, OpenCard: InvalidTypeIdException: Could not resolve type id 'OpenCard' as a subtype of `JsonNoSubTypes$OpenPayment`: known type ids = []

$ javac -cp jackson/lib/* jackson/JsonNoSubTypes.java && java JsonNoSubTypes     (27+35)
write         : {"type":"Card","amount":500}
sealed, Card  : Card[amount=500]
sealed, Upi   : Upi[amount=500]
sealed, Cheque: InvalidTypeIdException: Could not resolve type id 'Cheque' as a subtype of `JsonNoSubTypes$Payment`: known type ids = [Card, Upi]
plain, OpenCard: InvalidTypeIdException: Could not resolve type id 'OpenCard' as a subtype of `JsonNoSubTypes$OpenPayment`: known type ids = []
