Program: 61533
Project: 61533
Buggy source:
private void addTraitButtonActionPerformed(ActionEvent evt){
  int class_index=decompiledTextArea.getClassIndex();
  if (class_index < 0) {
    return;
  }
  if (newTraitDialog == null) {
    newTraitDialog=new NewTraitDialog();
  }
  int void_type=abc.constants.getPublicQnameId("String_Node_Str",true);
  int int_type=abc.constants.getPublicQnameId("String_Node_Str",true);
  Trait t=null;
  int kind;
  int nskind;
  String name=null;
  boolean isStatic;
  Multiname m;
  boolean again=false;
  loopm:   do {
    if (again) {
      View.showMessageDialog(null,AppStrings.translate("String_Node_Str").replace("String_Node_Str",name),AppStrings.translate("String_Node_Str"),JOptionPane.ERROR_MESSAGE);
    }
    again=false;
    if (newTraitDialog.showDialog() != AppDialog.OK_OPTION) {
      return;
    }
    kind=newTraitDialog.getTraitType();
    nskind=newTraitDialog.getNamespaceKind();
    name=newTraitDialog.getTraitName();
    isStatic=newTraitDialog.getStatic();
    m=new Multiname(Multiname.QNAME,abc.constants.getStringId(name,true),abc.constants.getNamespaceId(new Namespace(nskind,abc.constants.getStringId("String_Node_Str",true)),0,true),0,0,new ArrayList<>());
    int mid=abc.constants.getMultinameId(m);
    if (mid == 0) {
      break;
    }
    for (    Trait tr : abc.class_info.get(class_index).static_traits.traits) {
      if (tr.name_index == mid) {
        again=true;
        break;
      }
    }
    for (    Trait tr : abc.instance_info.get(class_index).instance_traits.traits) {
      if (tr.name_index == mid) {
        again=true;
        break;
      }
    }
  }
 while (again);
switch (kind) {
case Trait.TRAIT_GETTER:
case Trait.TRAIT_SETTER:
case Trait.TRAIT_METHOD:
    TraitMethodGetterSetter tm=new TraitMethodGetterSetter();
  MethodInfo mi=new MethodInfo(new int[0],void_type,abc.constants.getStringId(name,true),0,new ValueKind[0],new int[0]);
int method_info=abc.addMethodInfo(mi);
tm.method_info=method_info;
MethodBody body=new MethodBody(abc);
body.method_info=method_info;
body.init_scope_depth=1;
body.max_regs=1;
body.max_scope_depth=1;
body.max_stack=1;
body.exceptions=new ABCException[0];
AVM2Code code=new AVM2Code();
code.code.add(new AVM2Instruction(0,new GetLocal0Ins(),new int[0]));
code.code.add(new AVM2Instruction(0,new PushScopeIns(),new int[0]));
code.code.add(new AVM2Instruction(0,new ReturnVoidIns(),new int[0]));
body.setCode(code);
Traits traits=new Traits();
traits.traits=new ArrayList<>();
body.traits=traits;
abc.addMethodBody(body);
mi.setBody(body);
t=tm;
break;
case Trait.TRAIT_SLOT:
case Trait.TRAIT_CONST:
TraitSlotConst ts=new TraitSlotConst();
ts.type_index=int_type;
ts.value_kind=ValueKind.CONSTANT_Int;
ts.value_index=abc.constants.getIntId(0,true);
t=ts;
break;
}
if (t != null) {
t.kindType=kind;
t.name_index=abc.constants.getMultinameId(m,true);
int traitId;
if (isStatic) {
traitId=abc.class_info.get(class_index).static_traits.addTrait(t);
}
 else {
traitId=abc.class_info.get(class_index).static_traits.traits.size() + abc.instance_info.get(class_index).instance_traits.addTrait(t);
}
reload();
decompiledTextArea.gotoTrait(traitId);
}
}

Fixed version (ground truth):
private void addTraitButtonActionPerformed(ActionEvent evt){
  int class_index=decompiledTextArea.getClassIndex();
  if (class_index < 0) {
    return;
  }
  if (newTraitDialog == null) {
    newTraitDialog=new NewTraitDialog();
  }
  int void_type=abc.constants.getPublicQnameId("String_Node_Str",true);
  int int_type=abc.constants.getPublicQnameId("String_Node_Str",true);
  Trait t=null;
  int kind;
  int nskind;
  String name=null;
  boolean isStatic;
  Multiname m;
  boolean again=false;
  loopm:   do {
    if (again) {
      View.showMessageDialog(null,AppStrings.translate("String_Node_Str").replace("String_Node_Str",name),AppStrings.translate("String_Node_Str"),JOptionPane.ERROR_MESSAGE);
    }
    again=false;
    if (newTraitDialog.showDialog() != AppDialog.OK_OPTION) {
      return;
    }
    kind=newTraitDialog.getTraitType();
    nskind=newTraitDialog.getNamespaceKind();
    name=newTraitDialog.getTraitName();
    isStatic=newTraitDialog.getStatic();
    m=new Multiname(Multiname.QNAME,abc.constants.getStringId(name,true),abc.constants.getNamespaceId(new Namespace(nskind,abc.constants.getStringId("String_Node_Str",true)),0,true),0,0,new ArrayList<>());
    int mid=abc.constants.getMultinameId(m);
    if (mid == 0) {
      break;
    }
    for (    Trait tr : abc.class_info.get(class_index).static_traits.traits) {
      if (tr.name_index == mid) {
        again=true;
        break;
      }
    }
    for (    Trait tr : abc.instance_info.get(class_index).instance_traits.traits) {
      if (tr.name_index == mid) {
        again=true;
        break;
      }
    }
  }
 while (again);
switch (kind) {
case Trait.TRAIT_GETTER:
case Trait.TRAIT_SETTER:
case Trait.TRAIT_METHOD:
    TraitMethodGetterSetter tm=new TraitMethodGetterSetter();
  MethodInfo mi=new MethodInfo(new int[0],void_type,abc.constants.getStringId(name,true),0,new ValueKind[0],new int[0]);
int method_info=abc.addMethodInfo(mi);
tm.method_info=method_info;
MethodBody body=new MethodBody(abc);
body.method_info=method_info;
body.init_scope_depth=1;
body.max_regs=1;
body.max_scope_depth=1;
body.max_stack=1;
body.exceptions=new ABCException[0];
AVM2Code code=new AVM2Code();
code.code.add(new AVM2Instruction(0,new GetLocal0Ins(),new int[0]));
code.code.add(new AVM2Instruction(0,new PushScopeIns(),new int[0]));
code.code.add(new AVM2Instruction(0,new ReturnVoidIns(),new int[0]));
body.setCode(code);
Traits traits=new Traits();
traits.traits=new ArrayList<>();
body.traits=traits;
abc.addMethodBody(body);
mi.setBody(body);
t=tm;
break;
case Trait.TRAIT_SLOT:
case Trait.TRAIT_CONST:
TraitSlotConst ts=new TraitSlotConst();
ts.type_index=int_type;
ts.value_kind=ValueKind.CONSTANT_Int;
ts.value_index=abc.constants.getIntId(0,true);
t=ts;
break;
}
if (t != null) {
t.kindType=kind;
t.name_index=abc.constants.getMultinameId(m,true);
int traitId;
if (isStatic) {
traitId=abc.class_info.get(class_index).static_traits.addTrait(t);
}
 else {
traitId=abc.class_info.get(class_index).static_traits.traits.size() + abc.instance_info.get(class_index).instance_traits.addTrait(t);
}
int scriptIndex=decompiledTextArea.getScriptLeaf().scriptIndex;
if (scriptIndex >= 0 && scriptIndex < abc.script_info.size()) {
abc.script_info.get(scriptIndex).setModified(true);
}
((Tag)abc.parentTag).setModified(true);
reload();
decompiledTextArea.gotoTrait(traitId);
}
}