public static Geometry loadFromTextFileDbg(String textFileName) throws FileNotFoundException {
    String fullPath = textFileName;
    // string fullCSVPathName = System.IO.Path.Combine( directoryPath ,
    // CsvFileName);
    File fileInfo = new File(fullPath);

    Scanner scanner = new Scanner(fileInfo);

    Geometry geom = null;

    // grab first line
    String line = scanner.nextLine();
    String geomTypeString = line.substring(1);
    if (geomTypeString.equalsIgnoreCase("polygon")) geom = new Polygon();
    else if (geomTypeString.equalsIgnoreCase("polyline")) geom = new Polyline();
    else if (geomTypeString.equalsIgnoreCase("multipoint")) geom = new MultiPoint();
    else if (geomTypeString.equalsIgnoreCase("point")) geom = new Point();

    while (line.startsWith("*")) if (scanner.hasNextLine()) line = scanner.nextLine();

    int j = 0;
    Geometry.Type geomType = geom.getType();
    while (scanner.hasNextLine()) {
      String[] parsedLine = line.split("\\s+");
      double xVal = Double.parseDouble(parsedLine[0]);
      double yVal = Double.parseDouble(parsedLine[1]);
      if (j == 0 && (geomType == Geometry.Type.Polygon || geomType == Geometry.Type.Polyline))
        ((MultiPath) geom).startPath(xVal, yVal);
      else {
        if (geomType == Geometry.Type.Polygon || geomType == Geometry.Type.Polyline)
          ((MultiPath) geom).lineTo(xVal, yVal);
        else if (geomType == Geometry.Type.MultiPoint) ((MultiPoint) geom).add(xVal, yVal);
        // else if(geomType == Geometry.Type.Point)
        // Point geom = null;//new Point(xVal, yVal);
      }
      j++;
      line = scanner.nextLine();
    }

    scanner.close();

    return geom;
  }
 /**
  * Inserts vertices from the given multipath into this multipath. All added vertices are connected
  * by linear segments with each other and with the existing vertices.
  *
  * @param pathIndex The path index in this multipath to insert points to. Must correspond to an
  *     existing path.
  * @param beforePointIndex The point index before all other vertices to insert in the given path
  *     of this multipath. This value must be between 0 and GetPathSize(pathIndex), or -1 to insert
  *     points at the end of the given path.
  * @param src The source multipath.
  * @param srcPathIndex The source path index to copy points from.
  * @param srcPointIndexFrom The start point in the source path to start copying from.
  * @param srcPointCount The count of points to add.
  * @param bForward When FALSE, the points are inserted in reverse order.
  */
 public void insertPoints(
     int pathIndex,
     int beforePointIndex,
     MultiPath src,
     int srcPathIndex,
     int srcPointIndexFrom,
     int srcPointCount,
     boolean bForward) {
   m_impl.insertPoints(
       pathIndex,
       beforePointIndex,
       (MultiPathImpl) src._getImpl(),
       srcPathIndex,
       srcPointIndexFrom,
       srcPointCount,
       bForward);
 }
 /**
  * Copies a path from another multipath.
  *
  * @param src The multipath to copy from.
  * @param srcPathIndex The index of the path in the the source MultiPath.
  * @param bForward When FALSE, the points are inserted in reverse order.
  */
 public void addPath(MultiPath src, int srcPathIndex, boolean bForward) {
   m_impl.addPath((MultiPathImpl) src._getImpl(), srcPathIndex, bForward);
 }
 /**
  * Inserts a path from another multipath.
  *
  * @param pathIndex The start index of the multipath to insert.
  * @param src The multipath to insert into this multipath. Can be the same as the multipath being
  *     modified.
  * @param srcPathIndex The start index to insert the path into the multipath.
  * @param bForward When FALSE, the points are inserted in reverse order.
  */
 public void insertPath(int pathIndex, MultiPath src, int srcPathIndex, boolean bForward) {
   m_impl.insertPath(pathIndex, (MultiPathImpl) src._getImpl(), srcPathIndex, bForward);
 }
 /**
  * Appends all paths from another multipath.
  *
  * @param src The multipath to append to this multipath.
  * @param bReversePaths TRUE if the multipath is added should be added with its paths reversed.
  */
 public void add(MultiPath src, boolean bReversePaths) {
   m_impl.add((MultiPathImpl) src._getImpl(), bReversePaths);
 }