public List<Depth> getRelatedness( Concept synset1, Concept synset2, StringBuilder tracer ) {
		
		List<Subsumer> paths = pathFinder.getAllPaths( synset1, synset2, tracer );
		if ( paths==null || paths.size() == 0 ) return null;
		
		//Depth has subsumer, depth and root
		List<Depth> depthList = new ArrayList<Depth>( paths.size() );
		for ( Subsumer s : paths ) {
			List<Depth> depths = getSynsetDepths( s.subsumer.getSynset() );
			if ( depths==null || depths.size() == 0 ) return null;
			Depth depth = depths.get(0);
			depthList.add( depth );
		}
		
		//sort depthMap by depth (desc) --> this seems to be redundant. so let's skip.
		
		//Remove non-best elements
		List<Depth> toBeDeleted = new ArrayList<Depth>( depthList.size() );
		for ( Depth d : depthList ) {
			if ( depthList.get(0).depth != d.depth ) toBeDeleted.add( d );
		}
		depthList.removeAll( toBeDeleted );

		//Remove duplication
		Map<Integer,Depth> map = new LinkedHashMap<Integer,Depth>( depthList.size() );
		for ( Depth d : depthList ) {
			int key = d.toString().hashCode();
			map.put(key, d);
		}
		depthList = new ArrayList<Depth>( map.values() );
		
		return depthList;
	}