public ComparableNode getLeftmostProperDescendant() throws MaltChainedException {
		NonTerminalNode node = this;
		ComparableNode candidate = null;
		while (node != null) {
			candidate = node.getLeftChild();
			if (candidate == null || candidate instanceof TokenNode) {
				break;
			}
			node = (NonTerminalNode)candidate;
		}
		
		if (candidate == null && candidate instanceof NonTerminalNode) {
			candidate = null;
			DependencyNode dep = null;
			for (int index : ((TokenStructure)getBelongsToGraph()).getTokenIndices()) {
				dep = ((TokenStructure)getBelongsToGraph()).getTokenNode(index);
				while (dep != null) {
					if (dep == this ) {
						return dep;
					}
					dep = dep.getHead();
				}
			}
		}
		return candidate;	
	}