Program: 83814
Project: 83814
Buggy source:
private void writeInlineArguments(MethodWriter writer,IArguments arguments){
  if ((this.modifiers & Modifiers.INFIX) == Modifiers.INFIX) {
    int len=this.parameterCount;
    if ((this.modifiers & Modifiers.VARARGS) != 0) {
      len--;
      IParameter param;
      for (int i=1, j=0; i < len; i++, j++) {
        param=this.parameters[i];
        arguments.writeValue(j,param.getName(),param.getValue(),writer);
        writer.writeVarInsn(param.getType().getStoreOpcode(),i);
      }
      param=this.parameters[len];
      arguments.writeVarargsValue(len - 1,param.getName(),param.getType(),writer);
      writer.writeVarInsn(param.getType().getStoreOpcode(),len);
      return;
    }
    for (int i=1, j=0; i < this.parameterCount; i++, j++) {
      IParameter param=this.parameters[i];
      arguments.writeValue(j,param.getName(),param.getValue(),writer);
      writer.writeVarInsn(param.getType().getStoreOpcode(),i);
    }
    return;
  }
  if ((this.modifiers & Modifiers.PREFIX) == Modifiers.PREFIX) {
    arguments.writeValue(0,Name._this,null,writer);
    writer.writeVarInsn(this.getThisType().getStoreOpcode(),0);
    return;
  }
  if ((this.modifiers & Modifiers.VARARGS) != 0) {
    int len=this.parameterCount - 1;
    IParameter param;
    for (int i=0; i < len; i++) {
      param=this.parameters[i];
      arguments.writeValue(i,param.getName(),param.getValue(),writer);
      writer.writeVarInsn(param.getType().getStoreOpcode(),len);
    }
    param=this.parameters[len];
    arguments.writeVarargsValue(len,param.getName(),param.getType(),writer);
    writer.writeVarInsn(param.getType().getStoreOpcode(),len);
    return;
  }
  for (int i=0; i < this.parameterCount; i++) {
    IParameter param=this.parameters[i];
    arguments.writeValue(i,param.getName(),param.getValue(),writer);
    writer.writeVarInsn(param.getType().getStoreOpcode(),i);
  }
}

Fixed version (ground truth):
private void writeInlineArguments(MethodWriter writer,IArguments arguments,int localCount){
  if ((this.modifiers & Modifiers.INFIX) == Modifiers.INFIX) {
    int len=this.parameterCount;
    if ((this.modifiers & Modifiers.VARARGS) != 0) {
      len--;
      IParameter param;
      for (int i=1, j=0; i < len; i++, j++) {
        param=this.parameters[i];
        arguments.writeValue(j,param.getName(),param.getValue(),writer);
        writer.writeVarInsn(param.getType().getStoreOpcode(),i + localCount);
      }
      param=this.parameters[len];
      arguments.writeVarargsValue(len - 1,param.getName(),param.getType(),writer);
      writer.writeVarInsn(param.getType().getStoreOpcode(),len + localCount);
      return;
    }
    for (int i=1, j=0; i < this.parameterCount; i++, j++) {
      IParameter param=this.parameters[i];
      arguments.writeValue(j,param.getName(),param.getValue(),writer);
      writer.writeVarInsn(param.getType().getStoreOpcode(),i + localCount);
    }
    return;
  }
  if ((this.modifiers & Modifiers.PREFIX) == Modifiers.PREFIX) {
    arguments.writeValue(0,Name._this,null,writer);
    writer.writeVarInsn(this.getThisType().getStoreOpcode(),localCount);
    return;
  }
  if ((this.modifiers & Modifiers.VARARGS) != 0) {
    int len=this.parameterCount - 1;
    IParameter param;
    for (int i=0; i < len; i++) {
      param=this.parameters[i];
      arguments.writeValue(i,param.getName(),param.getValue(),writer);
      writer.writeVarInsn(param.getType().getStoreOpcode(),len + localCount);
    }
    param=this.parameters[len];
    arguments.writeVarargsValue(len,param.getName(),param.getType(),writer);
    writer.writeVarInsn(param.getType().getStoreOpcode(),len + localCount);
    return;
  }
  for (int i=0; i < this.parameterCount; i++) {
    IParameter param=this.parameters[i];
    arguments.writeValue(i,param.getName(),param.getValue(),writer);
    writer.writeVarInsn(param.getType().getStoreOpcode(),i + localCount);
  }
}