Program: 118779
Project: 118779
Buggy source:
public List<ElementParameter> resetElementParameters(){
  List<ElementParameter> oldParameters=(List<ElementParameter>)element.getElementParameters();
  final List<ElementParameter> newParameters=new ArrayList<ElementParameter>();
  ComponentProperties props=null;
  if (element instanceof INode) {
    INode node=(INode)element;
    if (node.getComponentProperties() != null) {
      props=node.getComponentProperties();
    }
  }
  List<ElementParameter> parameters=ComponentsUtils.getParametersFromForm(element,section,props,null,form,null,null);
  for (  ElementParameter parameter : parameters) {
    if (parameter instanceof GenericElementParameter) {
      ((GenericElementParameter)parameter).callBeforePresent();
      ((GenericElementParameter)parameter).addPropertyChangeListener(this);
    }
  }
  for (  ElementParameter oldParameter : oldParameters) {
    if (EParameterName.UPDATE_COMPONENTS.getName().equals(oldParameter.getName())) {
      oldParameter.setValue(true);
    }
    boolean added=false;
    for (    ElementParameter parameter : parameters) {
      if (oldParameter.getCategory() != null && oldParameter.getCategory().equals(parameter.getCategory()) && oldParameter.getName() != null && oldParameter.getName().equals(parameter.getName())) {
        if (EParameterFieldType.SCHEMA_TYPE.equals(parameter.getFieldType())) {
          if (oldParameter instanceof GenericElementParameter && parameter instanceof GenericElementParameter) {
            ComponentProperties oldProperties=((GenericElementParameter)oldParameter).getComponentProperties();
            ComponentProperties newProperties=((GenericElementParameter)parameter).getComponentProperties();
            if (oldProperties != null && oldProperties.getName() != null && newProperties != null && newProperties.getName() != null && oldProperties.getName().equals(newProperties.getName())) {
              if (parameter.getChildParameters().size() == 0) {
                parameter.getChildParameters().putAll(oldParameter.getChildParameters());
              }
            }
          }
        }
        IElementParameter property=element.getElementParameterFromField(EParameterFieldType.PROPERTY_TYPE,section);
        if (property != null) {
          Map<String,IElementParameter> childParameters=property.getChildParameters();
          if (childParameters != null) {
            IElementParameter elementParameter=childParameters.get(EParameterName.PROPERTY_TYPE.getName());
            if (elementParameter != null && EmfComponent.REPOSITORY.equals(elementParameter.getValue())) {
              String repositoryValue=parameter.getRepositoryValue();
              if (oldParameter.isShow(oldParameters) && (repositoryValue != null) && (!parameter.getName().equals(EParameterName.PROPERTY_TYPE.getName()))&& parameter.getCategory() == section) {
                parameter.setRepositoryValueUsed(true);
                parameter.setReadOnly(true);
              }
            }
          }
        }
        newParameters.add(parameter);
        added=true;
      }
    }
    if (!added) {
      newParameters.add(oldParameter);
    }
  }
  Display.getDefault().asyncExec(new Runnable(){
    @Override public void run(){
      if (newParameters.size() > 0) {
        element.setElementParameters(newParameters);
      }
    }
  }
);
  return newParameters;
}

Fixed version (ground truth):
public List<ElementParameter> resetElementParameters(){
  List<ElementParameter> oldParameters=(List<ElementParameter>)element.getElementParameters();
  final List<ElementParameter> newParameters=new ArrayList<ElementParameter>();
  ComponentProperties props=null;
  if (element instanceof INode) {
    INode node=(INode)element;
    if (node.getComponentProperties() != null) {
      props=node.getComponentProperties();
    }
  }
  List<ElementParameter> parameters=ComponentsUtils.getParametersFromForm(element,section,props,null,form,null,null);
  for (  ElementParameter parameter : parameters) {
    if (parameter instanceof GenericElementParameter) {
      ((GenericElementParameter)parameter).callBeforePresent();
      ((GenericElementParameter)parameter).addPropertyChangeListener(this);
    }
  }
  for (  ElementParameter oldParameter : oldParameters) {
    if (EParameterName.UPDATE_COMPONENTS.getName().equals(oldParameter.getName())) {
      oldParameter.setValue(true);
    }
    boolean added=false;
    for (    ElementParameter parameter : parameters) {
      if (oldParameter.getCategory() != null && oldParameter.getCategory().equals(parameter.getCategory()) && oldParameter.getName() != null && oldParameter.getName().equals(parameter.getName())) {
        if (EParameterFieldType.SCHEMA_TYPE.equals(parameter.getFieldType())) {
          if (oldParameter instanceof GenericElementParameter && parameter instanceof GenericElementParameter) {
            ComponentProperties oldProperties=((GenericElementParameter)oldParameter).getComponentProperties();
            ComponentProperties newProperties=((GenericElementParameter)parameter).getComponentProperties();
            if (oldProperties != null && oldProperties.getName() != null && newProperties != null && newProperties.getName() != null && oldProperties.getName().equals(newProperties.getName())) {
              if (parameter.getChildParameters().size() == 0) {
                parameter.getChildParameters().putAll(oldParameter.getChildParameters());
              }
            }
          }
        }
        IElementParameter property=element.getElementParameterFromField(EParameterFieldType.PROPERTY_TYPE,section);
        if (property != null) {
          Map<String,IElementParameter> childParameters=property.getChildParameters();
          if (childParameters != null) {
            IElementParameter elementParameter=childParameters.get(EParameterName.PROPERTY_TYPE.getName());
            if (elementParameter != null && EmfComponent.REPOSITORY.equals(elementParameter.getValue())) {
              String repositoryValue=parameter.getRepositoryValue();
              if (oldParameter.isShow(oldParameters) && (repositoryValue != null) && (!parameter.getName().equals(EParameterName.PROPERTY_TYPE.getName()))&& parameter.getCategory() == section) {
                parameter.setRepositoryValueUsed(true);
                parameter.setReadOnly(true);
              }
            }
          }
        }
        newParameters.add(parameter);
        added=true;
      }
    }
    if (!added) {
      newParameters.add(oldParameter);
    }
  }
  element.setElementParameters(newParameters);
  return newParameters;
}