///<summary>
        /// Tests whether this geometry intersects a given geometry.
        ///</summary>
        /// <param name="geom">The test geometry</param>
        /// <returns>true if the test geometry intersects</returns>
        public bool Intersects(IGeometry geom)
        {
            /*
             * If any segments intersect, obviously intersects = true
             */
            var lineSegStr = SegmentStringUtil.ExtractSegmentStrings(geom);

            // only request intersection finder if there are segments (ie NOT for point inputs)
            if (lineSegStr.Count > 0)
            {
                var segsIntersect = prepLine.IntersectionFinder.Intersects(lineSegStr);
                // MD - performance testing
                //		boolean segsIntersect = false;
                if (segsIntersect)
                {
                    return(true);
                }
            }

            /*
             * For L/L case we are done
             */
            if (geom.Dimension == Dimension.Curve)
            {
                return(false);
            }

            /*
             * For L/A case, need to check for proper inclusion of the target in the test
             */
            if (geom.Dimension == Dimension.Surface &&
                prepLine.IsAnyTargetComponentInTest(geom))
            {
                return(true);
            }

            /*
             * For L/P case, need to check if any points lie on line(s)
             */
            if (geom.Dimension == Dimension.Point)
            {
                return(IsAnyTestPointInTarget(geom));
            }

            //		return prepLine.getGeometry().intersects(geom);
            return(false);
        }