private static QuadTree sibling( QuadTree node, int[] ancestortype, int[] reverter )
	{
		int[] path = new int[MAXDEPTH + 1];
		int pathlength = 0;

		// recherche du plus proche ancetre commun
		QuadTree ancestor = node;
		while ( true )
		{
			if ( ancestor.type == -1 ) return null; // no common ancestor -> exit
			path[pathlength] = ancestor.type;
			pathlength++;
			if ( ancestor.type == ancestortype[0] )
			{
				ancestor = ancestor.parent;
				break;
			}
			if ( ancestor.type == ancestortype[1] )
			{
				ancestor = ancestor.parent;
				break;
			}
			ancestor = ancestor.parent;
		}

		// parcours de l'arbre en utilsant le chemin symetrique
		QuadTree cursor = ancestor, next = null;
		for ( int i = pathlength - 1; i >= 0; i-- )
		{
			if ( cursor.children == null ) break;
			next = cursor.children[reverter[path[i]]];
			if ( next == null ) break;
			cursor = next;
		}
		return cursor;
	}