public boolean isAncestor(mxGraphHierarchyNode otherNode)
	{
		// Firstly, the hash code of this node needs to be shorter than the
		// other node
		if (otherNode != null && hashCode != null && otherNode.hashCode != null
				&& hashCode.length < otherNode.hashCode.length)
		{
			if (hashCode == otherNode.hashCode)
			{
				return true;
			}
			
			if (hashCode == null || hashCode == null)
			{
				return false;
			}
			
			// Secondly, this hash code must match the start of the other
			// node's hash code. Arrays.equals cannot be used here since
			// the arrays are different length, and we do not want to
			// perform another array copy.
			for (int i = 0; i < hashCode.length; i++)
			{
				if (hashCode[i] != otherNode.hashCode[i])
				{
					return false;
				}
			}

			return true;
		}

		return false;
	}