  
      @Override
      public OperandStack next()
-@@ -44,4 +53,10 @@
+@@ -44,4 +53,16 @@
      {
          return opcode;
      }

Index: src/main/org/langera/freud/optional/classfile/method/instruction/MethodInvocationOperandStack.java
===================================================================
--- src/main/org/langera/freud/optional/classfile/method/instruction/MethodInvocationOperandStack.java	(revision )
+++ src/main/org/langera/freud/optional/classfile/method/instruction/MethodInvocationOperandStack.java	(revision )
@@ -0,0 +1,29 @@
+package org.langera.freud.optional.classfile.method.instruction;
+
+public final class MethodInvocationOperandStack extends AbstractOperandStack

+
+    public MethodInvocationOperandStack(final MethodInvocationInstruction instruction, final OperandStack next, final Opcode opcode)
+    {
+        super(popStack(instruction, next), opcode);
+        this.instruction = instruction;
+    }
+
+    private static OperandStack popStack(final MethodInvocationInstruction instruction, final OperandStack next)
+    {
+        OperandStack stack = next;
+        if (instruction.getOpcode() != Opcode.INVOKESTATIC)
+        {
+            stack = next.next(); // pop owner
+        }
+        return popArgs(instruction, stack);
+    }
+
+    private static OperandStack popArgs(final MethodInvocationInstruction instruction, final OperandStack next)
+    {
+        OperandStack stack = next;
+        final int length = instruction.getArgs().length;
+        for (int i=0; i < length; i++)
+        {
