Program: 2286
Project: 2286
Buggy source:
@Override public ClassBuilder generateType(){
  final String FUTURE_PARAM="String_Node_Str";
  Module main=this.apigen.getMainModule();
  GProtocolName gpn=this.apigen.getGProtocolName();
  String futureClass=getInputFutureName(this.parent.getName());
  ClassBuilder future=new ClassBuilder();
  future.setPackage(SessionApiGenerator.getStateChannelPackageName(gpn,this.apigen.getSelf()));
  future.addImports("String_Node_Str");
  future.addImports("String_Node_Str");
  future.addModifiers(InterfaceBuilder.PUBLIC);
  future.setName(futureClass);
  future.setSuperClass(SCRIBFUTURE_CLASS);
  List<String> types=new LinkedList<>();
  if (a.mid.isOp()) {
    if (!a.payload.isEmpty()) {
      int i=1;
      for (      PayloadType<?> pt : a.payload.elems) {
        String type=main.getDataTypeDecl((DataType)pt).extName;
        types.add(type);
        FieldBuilder f=future.newField("String_Node_Str" + i++);
        f.setType(type);
        f.addModifiers(JavaBuilder.PUBLIC);
      }
    }
  }
 else {
    String type=main.getMessageSigDecl(((MessageSigName)a.mid).getSimpleName()).extName;
    types.add(type);
    FieldBuilder f=future.newField("String_Node_Str");
    f.setType(type);
    f.addModifiers(JavaBuilder.PUBLIC);
  }
  ConstructorBuilder cons=future.newConstructor("String_Node_Str" + StateChannelApiGenerator.SCRIBMESSAGE_CLASS + "String_Node_Str"+ FUTURE_PARAM);
  cons.addModifiers(JavaBuilder.PROTECTED);
  cons.addBodyLine(JavaBuilder.SUPER + "String_Node_Str" + FUTURE_PARAM+ "String_Node_Str");
  MethodBuilder sync=future.newMethod("String_Node_Str");
  sync.addModifiers(JavaBuilder.PUBLIC);
  sync.setReturn(futureClass);
  sync.addExceptions("String_Node_Str");
  String ln=(a.mid.isOp() && a.payload.isEmpty()) ? "String_Node_Str" : StateChannelApiGenerator.SCRIBMESSAGE_CLASS + "String_Node_Str";
  ln+=JavaBuilder.SUPER + "String_Node_Str";
  sync.addBodyLine(ln);
  if (a.mid.isOp()) {
    if (!a.payload.isEmpty()) {
      int i=1;
      for (      String type : types) {
        sync.addBodyLine(JavaBuilder.THIS + "String_Node_Str" + "String_Node_Str"+ i+ "String_Node_Str"+ type+ "String_Node_Str"+ (i - 1)+ "String_Node_Str");
        i++;
      }
    }
  }
 else {
    sync.addBodyLine(JavaBuilder.THIS + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ types.get(0)+ "String_Node_Str");
  }
  sync.addBodyLine(JavaBuilder.RETURN + "String_Node_Str" + JavaBuilder.THIS+ "String_Node_Str");
  return future;
}

Fixed version (ground truth):
@Override public ClassBuilder generateType() throws ScribbleException {
  final String FUTURE_PARAM="String_Node_Str";
  Module main=this.apigen.getMainModule();
  GProtocolName gpn=this.apigen.getGProtocolName();
  String futureClass=getInputFutureName(this.parent.getName());
  ClassBuilder future=new ClassBuilder();
  future.setPackage(SessionApiGenerator.getStateChannelPackageName(gpn,this.apigen.getSelf()));
  future.addImports("String_Node_Str");
  future.addImports("String_Node_Str");
  future.addModifiers(InterfaceBuilder.PUBLIC);
  future.setName(futureClass);
  future.setSuperClass(SCRIBFUTURE_CLASS);
  List<String> types=new LinkedList<>();
  if (a.mid.isOp()) {
    if (!a.payload.isEmpty()) {
      int i=1;
      for (      PayloadType<?> pt : a.payload.elems) {
        DataTypeDecl dtd=main.getDataTypeDecl((DataType)pt);
        if (!dtd.schema.equals(ScribSocketGenerator.JAVA_SCHEMA)) {
          throw new ScribbleException("String_Node_Str" + dtd.schema);
        }
        String type=dtd.extName;
        types.add(type);
        FieldBuilder f=future.newField("String_Node_Str" + i++);
        f.setType(type);
        f.addModifiers(JavaBuilder.PUBLIC);
      }
    }
  }
 else {
    MessageSigNameDecl msd=main.getMessageSigDecl(((MessageSigName)a.mid).getSimpleName());
    if (!msd.schema.equals(ScribSocketGenerator.JAVA_SCHEMA)) {
      throw new ScribbleException("String_Node_Str" + msd.schema);
    }
    String type=msd.extName;
    types.add(type);
    FieldBuilder f=future.newField("String_Node_Str");
    f.setType(type);
    f.addModifiers(JavaBuilder.PUBLIC);
  }
  ConstructorBuilder cons=future.newConstructor("String_Node_Str" + StateChannelApiGenerator.SCRIBMESSAGE_CLASS + "String_Node_Str"+ FUTURE_PARAM);
  cons.addModifiers(JavaBuilder.PROTECTED);
  cons.addBodyLine(JavaBuilder.SUPER + "String_Node_Str" + FUTURE_PARAM+ "String_Node_Str");
  MethodBuilder sync=future.newMethod("String_Node_Str");
  sync.addModifiers(JavaBuilder.PUBLIC);
  sync.setReturn(futureClass);
  sync.addExceptions("String_Node_Str");
  String ln=(a.mid.isOp() && a.payload.isEmpty()) ? "String_Node_Str" : StateChannelApiGenerator.SCRIBMESSAGE_CLASS + "String_Node_Str";
  ln+=JavaBuilder.SUPER + "String_Node_Str";
  sync.addBodyLine(ln);
  if (a.mid.isOp()) {
    if (!a.payload.isEmpty()) {
      int i=1;
      for (      String type : types) {
        sync.addBodyLine(JavaBuilder.THIS + "String_Node_Str" + "String_Node_Str"+ i+ "String_Node_Str"+ type+ "String_Node_Str"+ (i - 1)+ "String_Node_Str");
        i++;
      }
    }
  }
 else {
    sync.addBodyLine(JavaBuilder.THIS + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ types.get(0)+ "String_Node_Str");
  }
  sync.addBodyLine(JavaBuilder.RETURN + "String_Node_Str" + JavaBuilder.THIS+ "String_Node_Str");
  return future;
}