Program: 118225
Project: 118225
Buggy source:
private void updateSchema(){
  IElement element=this.getElement();
  if (element instanceof Node) {
    Node node=(Node)element;
    List<INodeConnector> connectors=node.getConnectorsFromType(EConnectionType.FLOW_MAIN);
    for (    INodeConnector connector : connectors) {
      if (connector instanceof GenericNodeConnector) {
        Connector componentConnector=((GenericNodeConnector)connector).getComponentConnector();
        Schema schema=null;
        schema=getRootProperties().getSchema(componentConnector,((GenericNodeConnector)connector).isOutput());
        IMetadataTable mainTable=node.getMetadataFromConnector(connector.getName());
        if (schema != null) {
          MetadataTable metadataTable=MetadataToolAvroHelper.convertFromAvro(schema);
          IMetadataTable newTable=MetadataToolHelper.convert(metadataTable);
          if ((!mainTable.sameMetadataAs(newTable) || !newTable.sameMetadataAs(mainTable))) {
            mainTable.setListColumns(newTable.getListColumns());
            if (this.askPropagate == null && node.getOutgoingConnections().size() != 0) {
              Display.getDefault().syncExec(new Runnable(){
                @Override public void run(){
                  askPropagate=ChangeMetadataCommand.askPropagate();
                }
              }
);
            }
            if (this.askPropagate != null && this.askPropagate) {
              for (              IConnection connection : node.getOutgoingConnections()) {
                if (connector.getName().equals(connection.getConnectorName())) {
                  ChangeMetadataCommand cmd=new ChangeMetadataCommand(connection.getTarget(),null,null,newTable,null);
                  cmd.setPropagate(true);
                  IProcess process=node.getProcess();
                  if (process instanceof org.talend.designer.core.ui.editor.process.Process) {
                    CommandStack commandStack=((org.talend.designer.core.ui.editor.process.Process)process).getCommandStack();
                    commandStack.execute(cmd);
                  }
                }
              }
            }
          }
        }
      }
    }
    this.askPropagate=null;
  }
}

Fixed version (ground truth):
private void updateSchema(){
  IElement element=this.getElement();
  if (element instanceof Node) {
    Node node=(Node)element;
    List<INodeConnector> connectors=node.getConnectorsFromType(EConnectionType.FLOW_MAIN);
    for (    INodeConnector connector : connectors) {
      if (connector instanceof GenericNodeConnector) {
        Connector componentConnector=((GenericNodeConnector)connector).getComponentConnector();
        Schema schema=null;
        schema=getRootProperties().getSchema(componentConnector,((GenericNodeConnector)connector).isOutput());
        IMetadataTable mainTable=node.getMetadataFromConnector(connector.getName());
        if (schema != null && mainTable != null) {
          MetadataTable metadataTable=MetadataToolAvroHelper.convertFromAvro(schema);
          IMetadataTable newTable=MetadataToolHelper.convert(metadataTable);
          if (!mainTable.sameMetadataAs(newTable) || !newTable.sameMetadataAs(mainTable)) {
            mainTable.setListColumns(newTable.getListColumns());
            if (this.askPropagate == null && node.getOutgoingConnections().size() != 0) {
              Display.getDefault().syncExec(new Runnable(){
                @Override public void run(){
                  askPropagate=ChangeMetadataCommand.askPropagate();
                }
              }
);
            }
            if (this.askPropagate != null && this.askPropagate) {
              for (              IConnection connection : node.getOutgoingConnections()) {
                if (connector.getName().equals(connection.getConnectorName())) {
                  ChangeMetadataCommand cmd=new ChangeMetadataCommand(connection.getTarget(),null,null,newTable,null);
                  cmd.setPropagate(true);
                  IProcess process=node.getProcess();
                  if (process instanceof org.talend.designer.core.ui.editor.process.Process) {
                    CommandStack commandStack=((org.talend.designer.core.ui.editor.process.Process)process).getCommandStack();
                    commandStack.execute(cmd);
                  }
                }
              }
            }
          }
        }
      }
    }
    this.askPropagate=null;
  }
}