public void call(TypedValue self, OptionalInt argumentsCount, OptionalInt returnsCount, Frame<TypedValue> frame) {
final Stack<TypedValue> substack = frame.stack().substack(argumentsCount.get());
final List<TypedValue> args = ImmutableList.copyOf(substack);
substack.clear();
substack.push(self);
<BUG>for (TypedValue arg : args)
substack.push(arg);
</BUG>
final Frame<TypedValue> executionFrame = FrameFactory.newLocalFrame(frame, substack);
MetaObjectUtils.call(executionFrame, callable, argumentsCount.map(ADD_SELF_TO_COUNT), returnsCount);

public void call(TypedValue self, OptionalInt argumentsCount, OptionalInt returnsCount, Frame<TypedValue> frame) {
final Stack<TypedValue> substack = frame.stack().substack(argumentsCount.get());
final List<TypedValue> args = ImmutableList.copyOf(substack);
substack.clear();
substack.push(self);
substack.pushAll(args);
final Frame<TypedValue> executionFrame = FrameFactory.newLocalFrame(frame, substack);
MetaObjectUtils.call(executionFrame, callable, argumentsCount.map(ADD_SELF_TO_COUNT), returnsCount);
