Op op = Opcodes.OPCODES.get(iterator.byteAt(index)).init(context, index);
trace.append("\n").append(index).append(":").append(op.getName()).append(" --> ");
Frame frame = frames[index];
frame.isAccessible = true;
frame.stackBefore = currentStack.copy();
frame.decodedOp = op.decode(context, index);
if(frame.decodedOp instanceof DecodedBranchOp)
trace.append(" [jump to ").append(((DecodedBranchOp)frame.decodedOp).getJump()).append("] ");
if(frame.decodedOp instanceof DecodedMethodInvocationOp)
trace.append(" [params = ").append(StackElementLength.add(((DecodedMethodInvocationOp)frame.decodedOp).getPops())).append(" -> ").append(Arrays.toString(((DecodedMethodInvocationOp)frame.decodedOp).getParameterTypes())).append("] ");
frame.decodedOp.simulate(currentStack);