private void doArgumentBuildingTest(Object[] expectedArguments, Object... slotValues) { Barrier barrier = Barrier.dummyInstanceForTesting(); for (Object value : slotValues) { if (value instanceof ListMarker) { List<?> valueList = ((ListMarker) value).valueList; List<Slot> slotList = new ArrayList<Slot>(valueList.size()); Slot dummyListSlot = Slot.dummyInstanceForTesting(); dummyListSlot.fill(null); for (Object v : valueList) { Slot slot = Slot.dummyInstanceForTesting(); slot.fill(v); slotList.add(slot); } barrier.addListArgumentSlots(dummyListSlot, slotList); } else if (value instanceof PhantomMarker) { Slot slot = Slot.dummyInstanceForTesting(); slot.fill(((PhantomMarker) value).value); barrier.addPhantomArgumentSlot(slot); } else { Slot slot = Slot.dummyInstanceForTesting(); slot.fill(value); barrier.addRegularArgumentSlot(slot); } } Object[] arguments = barrier.buildArgumentArray(); assertEqualArrays(expectedArguments, arguments); }