private Units processInvoke() {
String signature = getSigConstantOperand();
FQMethod methodCall = new FQMethod(getClassConstantOperand(), getNameConstantOperand(), signature);
Units unit = TIME_UNIT_GENERATING_METHODS.get(methodCall);
if (unit == Units.CALLER) {
<BUG>int offset = Type.getArgumentTypes(signature).length;
if (stack.getStackDepth() > offset) {</BUG>
OpcodeStack.Item item = stack.getStackItem(offset);
unit = (Units) item.getUserValue();
} else {

private Units processInvoke() {
String signature = getSigConstantOperand();
FQMethod methodCall = new FQMethod(getClassConstantOperand(), getNameConstantOperand(), signature);
Units unit = TIME_UNIT_GENERATING_METHODS.get(methodCall);
if (unit == Units.CALLER) {
int offset = SignatureUtils.getNumParameters(signature);
if (stack.getStackDepth() > offset) {
OpcodeStack.Item item = stack.getStackItem(offset);
unit = (Units) item.getUserValue();
} else {
