protected EARMARKChildNode getPreviousSibling(EARMARKChildNode node) {
		EARMARKChildNode result = null;
		
		Iterator<EARMARKHierarchicalNode> ite = parentMap.get(node).iterator();
		while (result == null && ite.hasNext()) {
			Collection collection = childMap.get(ite.next());
			if (
					collection.getCollectionType() == Collection.Type.Set &&
					collection.size() > 1) {
				Iterator<EARMARKChildNode> iteList = collection.iterator();
				while (result == null || iteList.hasNext()) {
					EARMARKChildNode curNode = iteList.next();
					if (!curNode.equals(node)) {
						result = curNode;
					}
				}
			} else {
				Bag bag = (Bag) collection;
				int index = bag.indexOf(node);
				if (index > 0) {
					result = bag.get(index - 1);
				}
			}
		}
		
		return result;
	}