
public class LoopPeelingEA {
    public static void main(String[] args) throws Throwable {
        for (int i = 0; i < 20_000; i++) {
            payload();
        }
    }

    public static void payload() {
        var list = new MyList();
        list.addNode();
        list.addNode();

        // ...

        list.cleanup();
    }

    static class MyList  {
        Node first;

        public void addNode() {
            Node newNode = new Node();
            newNode.next = first;
            first = newNode;
        }

        public void cleanup() {
            Node current = first;
            // uncomment to help EA
            // if (current != null) {
            //     current.cleanup();
            //     current = current.next;
            // }
            while (current != null) {
                current.cleanup();
                current = current.next;
            }
        }

        
        private static class Node {
            Node next;

            public void cleanup() {
                // ...
            }
        }
    }
}