Assert.assertTrue(allowCalls);
if (exactArgCount) Assert.assertEquals(OptionalInt.of(expectedArgs.size()), argumentsCount);
if (exactReturnCount) Assert.assertEquals(OptionalInt.of(returns.size()), returnsCount);
for (E expectedArg : expectedArgs)
Assert.assertEquals(frame.stack().pop(), expectedArg);
<BUG>for (E ret : returns)
frame.stack().push(ret);
</BUG>
callCount++;
}

Assert.assertTrue(allowCalls);
if (exactArgCount) Assert.assertEquals(OptionalInt.of(expectedArgs.size()), argumentsCount);
if (exactReturnCount) Assert.assertEquals(OptionalInt.of(returns.size()), returnsCount);
for (E expectedArg : expectedArgs)
Assert.assertEquals(frame.stack().pop(), expectedArg);
frame.stack().pushAll(returns);
callCount++;
}
