/*
Layout of class Test$MyValue1@0x7e6a1d1caa60 extends java/lang/Object@0x7e6a1c1429e0
Instance fields:
 @0 RESERVED 12/-
 @12 REGULAR 1/1 "b" B
Static fields:
 @0 RESERVED 112/-
 @112 REGULAR 4/4 ".default" Ljava/lang/Object;
 @116 REGULAR 4/4 ".null_reset" Ljava/lang/Object;
Instance size = 16 bytes
First field offset = 12
Payload layout: 1/1
Non atomic flat layout: 1/1
Atomic flat layout: -/-
Nullable flat layout: -/-

Layout of class Test$MyValue2@0x7e6a1d1caa60 extends Test$MyAbstract1@0x7e6a1d1caa60
Instance fields:
 @0 RESERVED 12/-
 @12 EMPTY 4/1
 @16 INHERITED 1/1 "b" B
Static fields:
 @0 RESERVED 112/-
 @112 REGULAR 4/4 ".default" Ljava/lang/Object;
 @116 REGULAR 4/4 ".null_reset" Ljava/lang/Object;
Instance size = 24 bytes
First field offset = 16
Payload layout: 1/1
Non atomic flat layout: 1/1
Atomic flat layout: -/-
Nullable flat layout: -/-
*/

public class Test {

    public static value class MyValue1 {
        byte b = 42;

        public void test() { }
    }

    static abstract value class MyAbstract1 {
        byte b = 42;
    }

    public static value class MyValue2 extends MyAbstract1 {
        public void test() { }
    }

    public static void main(String[] args) {
        MyValue1 val1 = new MyValue1();
        val1.test();
        MyValue2 val2 = new MyValue2();
        val2.test();
    }
}
