Program: 85505
Project: 85505
Buggy source:
/** 
 * Create a requirement from sorted (by (schema.)table) List of matching columns.
 * @param matches
 * @return
 */
public static Requirement create(final List<MatchMetaData> matches){
  final Map<String,Table> tables=new HashMap<>();
  final Map<String,List<Column>> columns=new HashMap<>();
  Column column;
  for (  final MatchMetaData match : matches) {
    final StringBuilder sb=new StringBuilder();
    if (match.getSchemaName() != null && !match.getSchemaName().equals("String_Node_Str")) {
      sb.append(match.getSchemaName()).append('.').append(match.getTableName());
    }
 else {
      sb.append(match.getTableName());
    }
    final String tableName=sb.toString();
    Table table=tables.get(tableName);
    if (table == null) {
      table=new Table();
      table.setName(tableName);
      final List<String> pks=match.getPkeys();
      if (pks.size() == 1) {
        table.setPkey(pks.get(0));
      }
 else {
        final List<Key> keys=pks.stream().map(pkName -> {
          Key key=new Key();
          key.setName(pkName);
          return key;
        }
).collect(Collectors.toList());
        table.setPrimaryKeys(keys);
      }
      tables.put(tableName,table);
      columns.put(tableName,new ArrayList<>());
    }
    column=new Column();
    column.setName(match.getColumnName());
    column.setReturnType(match.getColumnType());
    addDefaultParam(column);
    columns.get(tableName).add(column);
  }
  for (  final Entry<String,List<Column>> entry : columns.entrySet()) {
    tables.get(entry.getKey()).setColumns(entry.getValue());
  }
  final Requirement req=new Requirement();
  req.setClient("String_Node_Str");
  req.setVersion("String_Node_Str");
  req.setTables(new ArrayList<>(tables.values()));
  return req;
}

Fixed version (ground truth):
/** 
 * Create a requirement from sorted (by (schema.)table) List of matching columns.
 * @param matches
 * @return
 */
public static Requirement create(final List<MatchMetaData> matches){
  final Map<String,Table> tables=new HashMap<>();
  final Map<String,List<Column>> columns=new HashMap<>();
  Column column;
  for (  final MatchMetaData match : matches) {
    final StringBuilder sb=new StringBuilder();
    if (match.getSchemaName() != null && !match.getSchemaName().equals("String_Node_Str")) {
      sb.append(match.getSchemaName()).append('.').append(match.getTableName());
    }
 else {
      sb.append(match.getTableName());
    }
    final String tableName=sb.toString();
    Table table=tables.get(tableName);
    if (table == null) {
      table=new Table();
      table.setName(tableName);
      final List<String> pks=match.getPkeys();
      if (pks.size() == 1) {
        table.setPkey(pks.get(0));
      }
 else {
        final List<Key> keys=pks.stream().map(pkName -> {
          Key key=new Key();
          key.setName(pkName);
          return key;
        }
).collect(Collectors.toList());
        table.setPrimaryKeys(keys);
      }
      tables.put(tableName,table);
      columns.put(tableName,new ArrayList<>());
    }
    column=new Column();
    column.setName(match.getColumnName());
    String columnType=match.getColumnType();
    if ("String_Node_Str".equals(columnType) || "String_Node_Str".equals(columnType)) {
      column.setReturnType("String_Node_Str");
    }
 else {
      column.setReturnType(match.getColumnType());
    }
    addDefaultParam(table.getName(),column);
    columns.get(tableName).add(column);
  }
  for (  final Entry<String,List<Column>> entry : columns.entrySet()) {
    tables.get(entry.getKey()).setColumns(entry.getValue());
  }
  final Requirement req=new Requirement();
  req.setClient("String_Node_Str");
  req.setVersion("String_Node_Str");
  req.setTables(new ArrayList<>(tables.values()));
  return req;
}