Program: 6394
Project: 6394
Buggy source:
@Check(CheckType.NORMAL) public void checkNoTransitiveNamespaceCycle(final Property p){
  if (p.getType() instanceof VersionedTypeRef) {
    VersionedType targetType=((VersionedTypeRef)p.getType()).getType();
    if (!targetType.eContainer().equals(p.eContainer().eContainer())) {
      DependencyDescription transDepsRoot=boQuery.getTransitiveDependencies(p,true,true,null,null);
      List<DependencyDescription> cycles=new ArrayList<DependencyDescription>();
      boolean hasImport=false;
      for (      DependencyDescription dep : transDepsRoot) {
        VersionedType verType=boQuery.toVersionedType(dep.getTarget(),p.eResource());
        if (!nameProvider.getFullyQualifiedName(p.eContainer().eContainer()).equals(dep.getContainer().getName())) {
          hasImport=true;
        }
        if (hasImport && boQuery.hasTypeNSReferencesToNS(verType,(SubNamespace)p.eContainer().eContainer())) {
          cycles.add(dep);
        }
      }
      if (cycles.iterator().hasNext())       warning("String_Node_Str" + p.getName() + "String_Node_Str",ServiceDslPackage.Literals.PROPERTY__TYPE);
    }
  }
}

Fixed version (ground truth):
@Check(CheckType.NORMAL) public void checkNoTransitiveNamespaceCycle(final Property p){
  if (p.getType() instanceof VersionedTypeRef) {
    VersionedType targetType=((VersionedTypeRef)p.getType()).getType();
    if (!targetType.eContainer().equals(p.eContainer().eContainer())) {
      DependencyDescription transDepsRoot=boQuery.getTransitiveDependencies(p,true,true,null,null);
      boolean hasTransitImport=false;
      boolean rootVisited=false;
      List<String> foundPaths=new ArrayList<String>();
      for (      DependencyDescription dep : transDepsRoot) {
        if (rootVisited) {
          VersionedType verType=boQuery.toVersionedType(dep.getTarget(),p.eResource());
          if (verType != null) {
            if (!nameProvider.getFullyQualifiedName(p.eContainer().eContainer()).equals(dep.getContainer().getName())) {
              hasTransitImport=true;
            }
            List<QualifiedName> otherTypeNsRefersToNs=boQuery.getOtherTypeNsRefsToNs(verType,(SubNamespace)p.eContainer().eContainer());
            if (hasTransitImport && !otherTypeNsRefersToNs.isEmpty()) {
              StringBuilder msg=new StringBuilder();
              String path=getReferrerDependencyPath(dep,new StringBuilder());
              if (!foundPaths.contains(path)) {
                foundPaths.add(path);
                msg.append("String_Node_Str" + p.getName() + "String_Node_Str");
                msg.append(path);
                if (otherTypeNsRefersToNs != null && !otherTypeNsRefersToNs.isEmpty()) {
                  msg.append("String_Node_Str");
                  msg.append(dep.getContainer().getName().toString());
                  msg.append("String_Node_Str");
                  Iterator<QualifiedName> otherTypeNsRefersToNsIt=otherTypeNsRefersToNs.iterator();
                  while (otherTypeNsRefersToNsIt.hasNext()) {
                    QualifiedName name=otherTypeNsRefersToNsIt.next();
                    msg.append(getPropertyShortName(name));
                    if (otherTypeNsRefersToNsIt.hasNext()) {
                      msg.append("String_Node_Str");
                    }
                  }
                }
                warning(msg.toString(),ServiceDslPackage.Literals.PROPERTY__TYPE);
              }
            }
          }
        }
 else {
          rootVisited=true;
        }
      }
    }
  }
}