gt:                     return new LocalVariableOperandStack(method, 3, stack, this);
context: /*
   * Copyright (c) 2011.
   * This file is part of "Freud".
   *
   * Freud is free software: you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation, either version 3 of the License, or
   * (at your option) any later version.
   *
   * Freud is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with Freud.  If not, see <http://www.gnu.org/licenses/>.
   * @author Amir Langer  langera_at_gmail_dot_com
   */
  
  package org.langera.freud.optional.classfile.method.instruction;
  
  import org.langera.freud.optional.classfile.method.ClassFileMethod;
  
  import java.util.List;
  
  public enum Opcode
  {
      NOP
              {
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, OperandStack stack)
                  {
                      return stack;
                  }
  
              }, // visitInsn
      ACONST_NULL
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack(null, stack, this);
                  }
              }, // -
      ICONST_M1
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("I", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      ICONST_0
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("I", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      ICONST_1
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("I", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      ICONST_2
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("I", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      ICONST_3
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("I", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      ICONST_4
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("I", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      ICONST_5
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("I", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      LCONST_0
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("J", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      LCONST_1
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("J", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      FCONST_0
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("F", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      FCONST_1
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("F", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      FCONST_2
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("F", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      DCONST_0
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("D", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      DCONST_1
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("D", stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      BIPUSH
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("I", stack, this);
                  }
              }, // visitIntInsn
      SIPUSH
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack("I", stack, this);
                  }
              }, // -
      LDC
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack(instruction.getOperandType(), stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // visitLdcInsn
      LDC_W
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack(instruction.getOperandType(), stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      LDC2_W
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new StaticOperandStack(instruction.getOperandType(), stack, this);
                  }
  
                  @Override
                  public boolean isConstant()
                  {
                      return true;
                  }
              }, // -
      ILOAD
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, instruction.getVarIndex(), stack, this);
                  }
              }, // visitVarInsn
      LLOAD
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, instruction.getVarIndex(), stack, this);
                  }
              }, // -
      FLOAD
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, instruction.getVarIndex(), stack, this);
                  }
              }, // -
      DLOAD
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, instruction.getVarIndex(), stack, this);
                  }
              }, // -
      ALOAD
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, instruction.getVarIndex(), stack, this);
                  }
              }, // -
      ILOAD_0
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 0, stack, this);
                  }
              }, // -
      ILOAD_1
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 1, stack, this);
                  }
              }, // -
      ILOAD_2
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 2, stack, this);
                  }
              }, // -
      ILOAD_3
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 3, stack, this);
                  }
              }, // -
      LLOAD_0
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 0, stack, this);
                  }
              }, // -
      LLOAD_1
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 1, stack, this);
                  }
              }, // -
      LLOAD_2
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 2, stack, this);
                  }
              }, // -
      LLOAD_3
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 3, stack, this);
                  }
              }, // -
      FLOAD_0
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 0, stack, this);
                  }
              }, // -
      FLOAD_1
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 1, stack, this);
                  }
              }, // -
      FLOAD_2
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 2, stack, this);
                  }
              }, // -
      FLOAD_3
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 3, stack, this);
                  }
              }, // -
      DLOAD_0
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 0, stack, this);
                  }
              }, // -
      DLOAD_1
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 1, stack, this);
                  }
              }, // -
      DLOAD_2
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
                      return new LocalVariableOperandStack(method, 2, stack, this);
                  }
              }, // -
      DLOAD_3
              {
                  @Override
                  public OperandStack updateOperandStack(final ClassFileMethod method, final Instruction instruction, final OperandStack stack)
                  {
  