1 import java.util.*;
 2 
 3 class MaterializeMember {
 4     // inspired by TestNG-7.3.0
 5     // https://github.com/testng-team/testng/blob/9ae7d3d9d19e5aa51e9610549c72e883718e82e5/src/main/java/org/testng/internal/reflect/ReflectionRecipes.java#L369C56-L369C80
 6     private static class ListBackedImmutableQueue<T> {
 7         private final List<T> backingList;
 8 
 9         ListBackedImmutableQueue(final T[] elements) {
10             backingList = new ArrayList<>(elements.length);
11             Collections.addAll(backingList, elements);
12         }
13 
14         T poll() {
15             if (!backingList.isEmpty()) {
16                 return backingList.remove(0);
17             }
18             throw new RuntimeException("Queue exhausted");
19         }
20     }
21 
22     public void test() {
23         Integer[] parameters = new Integer[3];
24         for (int i = 0; i < parameters.length; ++i) {
25             parameters[i] = Integer.valueOf(i);
26         }
27         var queue = new ListBackedImmutableQueue<Integer>(parameters);
28         for (Integer p : parameters) {
29             Integer t = queue.poll();
30             if (!t.equals(p)) {
31                 throw new RuntimeException("wrong result!");
32             }
33         }
34     }
35 
36     public static void main(String[] args) {
37         MaterializeMember kase = new MaterializeMember();
38         for (int i = 0; i < 300_000; ++i) {
39             kase.test();
40         }
41     }
42 }