Program: 6393
Project: 6393
Buggy source:
public DependencyDescription buildDependencyDescription(final Property sourceProp,final BusinessObject bo,final boolean includeInheritedProperties,final boolean includeCycleTypes,List<IEObjectDescription> visitedDependendies,DependencyDescription referrer){
  final IEObjectDescription source=descriptionBuilder.buildDescription(sourceProp);
  final IEObjectDescription sourceBO=descriptionBuilder.buildDescription(sourceProp.eContainer());
  final IEObjectDescription target=descriptionBuilder.buildDescription(bo);
  final IEObjectDescription targetContainer=descriptionBuilder.buildDescription(bo.eContainer());
  if (visitedDependendies == null) {
    visitedDependendies=new ArrayList<IEObjectDescription>();
  }
  if (visitedDependendies.isEmpty())   visitedDependendies.add(sourceBO);
  Deque<DependencyDescription> dependencies=new ArrayDeque<DependencyDescription>();
  DependencyDescription dep=new DependencyDescription(source,target,targetContainer,referrer);
  boolean targetVisited=Iterables.any(visitedDependendies,new Predicate<IEObjectDescription>(){
    @Override public boolean apply(    IEObjectDescription input){
      return BaseDslEqualityHelper.isEqual(input,target);
    }
  }
);
  if (!targetVisited) {
    visitedDependendies.add(target);
    for (    Property p : bo.getProperties()) {
      DependencyDescription propDep=getTransitiveDependencies(p,includeInheritedProperties,includeCycleTypes,visitedDependendies,dep);
      if (propDep != null && (!propDep.isBackRef() || propDep.isBackRef() && includeCycleTypes))       dependencies.add(propDep);
    }
  }
 else {
    dep.setBackRef(true);
  }
  dep.setDependencies(dependencies);
  return dep;
}

Fixed version (ground truth):
public DependencyDescription buildDependencyDescription(final Property sourceProp,final VersionedType targetType,final boolean includeInheritedProperties,final boolean includeCycleTypes,List<IEObjectDescription> visitedDependendies,DependencyDescription referrer){
  final IEObjectDescription source=descriptionBuilder.buildDescription(sourceProp);
  final IEObjectDescription sourceBO=descriptionBuilder.buildDescription(sourceProp.eContainer());
  final IEObjectDescription target=descriptionBuilder.buildDescription(targetType);
  final IEObjectDescription targetContainer=descriptionBuilder.buildDescription(targetType.eContainer());
  if (visitedDependendies == null) {
    visitedDependendies=new ArrayList<IEObjectDescription>();
  }
  if (visitedDependendies.isEmpty())   visitedDependendies.add(sourceBO);
  Deque<DependencyDescription> dependencies=new ArrayDeque<DependencyDescription>();
  DependencyDescription dep=new DependencyDescription(source,target,targetContainer,referrer);
  boolean targetVisited=Iterables.any(visitedDependendies,new Predicate<IEObjectDescription>(){
    public boolean apply(    IEObjectDescription input){
      return BaseDslEqualityHelper.isEqual(input,target);
    }
  }
);
  if (!targetVisited) {
    visitedDependendies.add(target);
    if (targetType instanceof BusinessObject) {
      BusinessObject targetBO=(BusinessObject)targetType;
      for (      Property p : targetBO.getProperties()) {
        DependencyDescription propDep=getTransitiveDependencies(p,includeInheritedProperties,includeCycleTypes,visitedDependendies,dep);
        if (propDep != null && (!propDep.isBackRef() || propDep.isBackRef() && includeCycleTypes))         dependencies.add(propDep);
      }
    }
  }
 else {
    dep.setBackRef(true);
  }
  dep.setDependencies(dependencies);
  return dep;
}