private void recursiveFindChanged(List<ClassChangeList> changedList, Node sub, ObjectStack otherStack, ClassChangeList deletedNodes)
	{
		List<Node> supers = sub.getSupers();
		if (supers.size() == 0)
		{
			// no superclasses, this is the end of a chain of deleted
			// interfaces or superclasses
			ClassChangeList realDeleted = new ClassChangeList();
			realDeleted.addAll(deletedNodes);
			if(otherStack.contains(sub))
			{
				realDeleted.setShared(true);
				//set the name of the class just below the shared class in the other stack
				Node otherSub = otherStack.getSubNode(sub);
				realDeleted.setSharedSub(otherSub);
			}
			changedList.add(realDeleted);
		}
		else
		{
			for (Node s : supers)
			{
				ClassChangeList tmp = new ClassChangeList();
				tmp.addAll(deletedNodes);
				if(!otherStack.hasSuper(sub, s))
				{
					// more deleted nodes, keep on recursing
					tmp.addNode(s);
					recursiveFindChanged(changedList, s, otherStack, tmp);
				}
				else
				{
					// the chain has re-merged with the new tree, stop recursing
					tmp.setShared(true);
					//set the name of the class just below the shared class in the other stack
					Node otherSub = otherStack.getSubNode(sub);
					tmp.setSharedSub(otherSub);
					changedList.add(tmp);
				}
			}
		}

	}