code: public static Point readPoint(ByteReader reader, boolean hasZ, boolean hasM) {
  
  		double x = reader.readDouble();
  		double y = reader.readDouble();
  
  		Point point = new Point(hasZ, hasM, x, y);
  
  		if (hasZ) {
  			double z = reader.readDouble();
  			point.setZ(z);
  		}
  
  		if (hasM) {
  			double m = reader.readDouble();
  			point.setM(m);
  		}
  
  		return point;
  	}
docs: Read a Point
  
  @param reader
  @param hasZ
  @param hasM
  @return point