Program: 125378
Project: 125378
Buggy source:
@Override public void dispose(){
  boolean doDispose=isEnableDisposed();
  if (doDispose) {
    this.project=null;
    this.recBinNode=null;
  }
  if (refProject != null) {
    for (    IRepositoryNode refP : refProject.getChildren()) {
      if (refP instanceof IProjectRepositoryNode) {
        if (refP instanceof RepositoryNode) {
          ((RepositoryNode)refP).setEnableDisposed(doDispose);
        }
        refP.dispose();
      }
    }
  }
  for (  DynaEnum<? extends DynaEnum<?>> de : ERepositoryObjectType.values()) {
    if (de instanceof ERepositoryObjectType) {
      RepositoryNode rootRepositoryNode=getRootRepositoryNode((ERepositoryObjectType)de);
      if (rootRepositoryNode != null && !rootRepositoryNode.isDisposed()) {
        rootRepositoryNode.setEnableDisposed(doDispose);
        rootRepositoryNode.dispose();
      }
    }
  }
  if (this.repositoryNodeMap != null) {
    for (    String type : this.repositoryNodeMap.keySet()) {
      RepositoryNode repositoryNode=this.repositoryNodeMap.get(type);
      if (repositoryNode != null && !repositoryNode.isDisposed()) {
        repositoryNode.setEnableDisposed(doDispose);
        repositoryNode.dispose();
      }
    }
    if (doDispose) {
      this.repositoryNodeMap.clear();
    }
  }
  if (doDispose && this.nodeAndProject != null) {
    nodeAndProject.clear();
  }
  if (doDispose) {
    final Field[] declaredFields=this.getClass().getDeclaredFields();
    for (    Field f : declaredFields) {
      f.setAccessible(true);
      try {
        final Object object=f.get(this);
        if (object == defaultProjRepoNode) {
          continue;
        }
        if (object instanceof RepositoryNode) {
          f.set(this,null);
        }
      }
 catch (      IllegalArgumentException e) {
      }
catch (      IllegalAccessException e) {
      }
    }
  }
  super.dispose();
}

Fixed version (ground truth):
@Override public void dispose(){
  boolean doDispose=isEnableDisposed();
  if (doDispose) {
    this.project=null;
    this.recBinNode=null;
  }
  if (refProject != null) {
    for (    IRepositoryNode refP : refProject.getChildren()) {
      if (refP instanceof IProjectRepositoryNode) {
        if (refP instanceof RepositoryNode) {
          ((RepositoryNode)refP).setEnableDisposed(doDispose);
        }
        refP.dispose();
      }
    }
  }
  for (  DynaEnum<? extends DynaEnum<?>> de : ERepositoryObjectType.values()) {
    if (de instanceof ERepositoryObjectType) {
      RepositoryNode rootRepositoryNode=getRootRepositoryNode((ERepositoryObjectType)de);
      if (rootRepositoryNode != null && !rootRepositoryNode.isDisposed()) {
        rootRepositoryNode.setEnableDisposed(doDispose);
        rootRepositoryNode.dispose();
      }
    }
  }
  if (this.repositoryNodeMap != null) {
    for (    String type : this.repositoryNodeMap.keySet()) {
      RepositoryNode repositoryNode=this.repositoryNodeMap.get(type);
      if (repositoryNode != null && !repositoryNode.isDisposed()) {
        repositoryNode.setEnableDisposed(doDispose);
        repositoryNode.dispose();
      }
    }
    if (doDispose) {
      this.repositoryNodeMap.clear();
    }
  }
  if (doDispose && this.nodeAndProject != null) {
    nodeAndProject.clear();
  }
  if (doDispose) {
    final Field[] declaredFields=this.getClass().getDeclaredFields();
    for (    Field f : declaredFields) {
      f.setAccessible(true);
      try {
        final Object object=f.get(this);
        if (object == defaultProjRepoNode) {
          continue;
        }
        if (object == dummyProjRepoNode) {
          continue;
        }
        if (object instanceof RepositoryNode) {
          f.set(this,null);
        }
      }
 catch (      IllegalArgumentException e) {
      }
catch (      IllegalAccessException e) {
      }
    }
  }
  super.dispose();
}