class BDup2Inst extends BDupInst implements Dup2Inst {

  private final Type mOp1Type;
  private final Type mOp2Type;

  public BDup2Inst(Type aOp1Type, Type aOp2Type) {
    this.mOp1Type = Baf.getDescriptorTypeOf(aOp1Type);
    this.mOp2Type = Baf.getDescriptorTypeOf(aOp2Type);
  }

  @Override
  public Type getOp1Type() {
    return mOp1Type;
  }

  @Override
  public Type getOp2Type() {
    return mOp2Type;
  }

  @Override
  public List<Type> getOpTypes() {<FILL_FUNCTION_BODY>}

  @Override
  public List<Type> getUnderTypes() {
    return new ArrayList<Type>();
  }

  @Override
  final public String getName() {
    return "dup2";
  }

  @Override
  public void apply(Switch sw) {
    ((InstSwitch) sw).caseDup2Inst(this);
  }

  @Override
  public String toString() {
    return "dup2." + Baf.bafDescriptorOf(mOp1Type) + Baf.bafDescriptorOf(mOp2Type);
  }
}

    List<Type> res = new ArrayList<Type>();
    res.add(mOp1Type);
    res.add(mOp2Type);
    return res;
  
<methods>public non-sealed void <init>() ,public void apply(soot.util.Switch) ,public int getInCount() ,public int getInMachineCount() ,public int getOutCount() ,public int getOutMachineCount() <variables>