/**
   * Tests whether this geometry intersects a given geometry.
   *
   * @param geom the test geometry
   * @return true if the test geometry intersects
   */
  public boolean intersects(Geometry geom) {
    /** If any segments intersect, obviously intersects = true */
    List lineSegStr = SegmentStringUtil.extractSegmentStrings(geom);
    boolean segsIntersect = prepLine.getIntersectionFinder().intersects(lineSegStr);
    // MD - performance testing
    //		boolean segsIntersect = false;
    if (segsIntersect) return true;

    /** For L/L case we are done */
    if (geom.getDimension() == 1) return false;

    /** For L/A case, need to check for proper inclusion of the target in the test */
    if (geom.getDimension() == 2 && prepLine.isAnyTargetComponentInTest(geom)) return true;

    /** For L/P case, need to check if any points lie on line(s) */
    if (geom.getDimension() == 0) return isAnyTestPointInTarget(geom);

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