internal static com.esri.core.geometry.QuadTree BuildQuadTree_(com.esri.core.geometry.MultiPointImpl multipointImpl)
		{
			com.esri.core.geometry.Envelope2D extent = new com.esri.core.geometry.Envelope2D();
			multipointImpl.QueryEnvelope2D(extent);
			com.esri.core.geometry.QuadTree quadTree = new com.esri.core.geometry.QuadTree(extent, 8);
			com.esri.core.geometry.Envelope2D boundingbox = new com.esri.core.geometry.Envelope2D();
			com.esri.core.geometry.Point2D pt;
			for (int i = 0; i < multipointImpl.GetPointCount(); i++)
			{
				pt = multipointImpl.GetXY(i);
				boundingbox.SetCoords(pt.x, pt.y, pt.x, pt.y);
				quadTree.Insert(i, boundingbox, -1);
			}
			return quadTree;
		}
		internal static com.esri.core.geometry.QuadTree BuildQuadTree_(com.esri.core.geometry.MultiPathImpl multipathImpl)
		{
			com.esri.core.geometry.Envelope2D extent = new com.esri.core.geometry.Envelope2D();
			multipathImpl.QueryEnvelope2D(extent);
			com.esri.core.geometry.QuadTree quadTree = new com.esri.core.geometry.QuadTree(extent, 8);
			int hint_index = -1;
			com.esri.core.geometry.Envelope2D boundingbox = new com.esri.core.geometry.Envelope2D();
			com.esri.core.geometry.SegmentIteratorImpl seg_iter = multipathImpl.QuerySegmentIterator();
			while (seg_iter.NextPath())
			{
				while (seg_iter.HasNextSegment())
				{
					com.esri.core.geometry.Segment segment = seg_iter.NextSegment();
					int index = seg_iter.GetStartPointIndex();
					segment.QueryEnvelope2D(boundingbox);
					hint_index = quadTree.Insert(index, boundingbox, hint_index);
				}
			}
			return quadTree;
		}