code: public boolean isInstanceDependencyChainAcyclic() {
  
  		final AbstractJobVertex[] allVertices = this.getAllJobVertices();
  		final Set<AbstractJobVertex> alreadyVisited = new HashSet<AbstractJobVertex>();
  
  		for (AbstractJobVertex vertex : allVertices) {
  
  			if (alreadyVisited.contains(vertex)) {
  				continue;
  			}
  
  			AbstractJobVertex vertexToShareInstancesWith = vertex.getVertexToShareInstancesWith();
  			if (vertexToShareInstancesWith != null) {
  
  				final Set<AbstractJobVertex> cycleMap = new HashSet<AbstractJobVertex>();
  
  				while (vertexToShareInstancesWith != null) {
  
  					if (cycleMap.contains(vertexToShareInstancesWith)) {
  						return false;
  					} else {
  						alreadyVisited.add(vertexToShareInstancesWith);
  						cycleMap.add(vertexToShareInstancesWith);
  						vertexToShareInstancesWith = vertexToShareInstancesWith.getVertexToShareInstancesWith();
  					}
  				}
  			}
  		}
  
  		return true;
  	}
docs: Checks if the instance dependency chain created with the <code>setVertexToShareInstancesWith</code> method is
  acyclic.
  
  @return <code>true</code> if the dependency chain is acyclic, <code>false</code> otherwise