Program: 118638
Project: 118638
Buggy source:
private void init(){
  connectionsToDelete=new HashMap<Connection,IODataComponent>();
  for (  IODataComponent dataComponent : inAndOut.getOuputs()) {
    IConnection connection=dataComponent.getConnection();
    boolean metadataExists=false;
    for (    IMetadataTable metadata : newMetaDataList) {
      if (connection.getMetadataTable().getTableName().equals(metadata.getTableName())) {
        metadataExists=true;
      }
    }
    if (!metadataExists && (connection instanceof Connection)) {
      connectionsToDelete.put((Connection)connection,dataComponent);
    }
  }
  for (  Connection connection : (List<Connection>)node.getIncomingConnections()) {
    String schemaType=(String)connection.getSource().getPropertyValue(EParameterName.SCHEMA_TYPE.getName());
    if (schemaType != null) {
      if (schemaType.equals(EmfComponent.REPOSITORY)) {
        String metaRepositoryName=(String)connection.getSource().getPropertyValue(EParameterName.REPOSITORY_SCHEMA_TYPE.getName());
        IMetadataTable repositoryMetadata=MetadataToolHelper.getMetadataFromRepository(metaRepositoryName);
        if (repositoryMetadata == null) {
          connection.getSource().setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
        }
 else {
          repositoryMetadata=repositoryMetadata.clone();
          repositoryMetadata.setTableName(connection.getSource().getUniqueName());
          if (!repositoryMetadata.sameMetadataAs(connection.getMetadataTable(),IMetadataColumn.OPTIONS_IGNORE_USED)) {
            connection.getSource().setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
          }
        }
      }
    }
  }
  setLabel(Messages.getString("String_Node_Str") + node.getUniqueName());
}

Fixed version (ground truth):
private void init(){
  connectionsToDelete=new HashMap<Connection,IODataComponent>();
  for (  IODataComponent dataComponent : inAndOut.getOuputs()) {
    IConnection connection=dataComponent.getConnection();
    boolean metadataExists=false;
    for (    IMetadataTable metadata : newMetaDataList) {
      if (connection.getMetadataTable().getTableName().equals(metadata.getTableName())) {
        metadataExists=true;
      }
    }
    if (!metadataExists && (connection instanceof Connection)) {
      connectionsToDelete.put((Connection)connection,dataComponent);
    }
  }
  for (  Connection connection : (List<Connection>)node.getIncomingConnections()) {
    String schemaType=(String)connection.getSource().getPropertyValue(EParameterName.SCHEMA_TYPE.getName());
    if (schemaType != null) {
      if (schemaType.equals(EmfComponent.REPOSITORY)) {
        String metaRepositoryName=(String)connection.getSource().getPropertyValue(EParameterName.REPOSITORY_SCHEMA_TYPE.getName());
        IMetadataTable repositoryMetadata=MetadataToolHelper.getMetadataFromRepository(metaRepositoryName);
        if (repositoryMetadata == null) {
          connection.getSource().setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
        }
 else {
          repositoryMetadata=repositoryMetadata.clone();
          repositoryMetadata.setTableName(connection.getSource().getUniqueName());
          ((org.talend.core.model.metadata.MetadataTable)repositoryMetadata).setRepository(true);
          if (!repositoryMetadata.sameMetadataAs(connection.getMetadataTable(),IMetadataColumn.OPTIONS_IGNORE_USED)) {
            connection.getSource().setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
          }
        }
      }
    }
  }
  setLabel(Messages.getString("String_Node_Str") + node.getUniqueName());
}