docs: private static boolean multiPointWithinEnvelope_(MultiPoint multipoint_a,
  			Envelope envelope_b, double tolerance,
  			ProgressTracker progress_tracker) {
  		Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D();
  		multipoint_a.queryEnvelope2D(env_a);
  		envelope_b.queryEnvelope2D(env_b);
  
  		if (!envelopeInfContainsEnvelope_(env_b, env_a, tolerance))
  			return false;
  
  		if (env_b.getHeight() <= tolerance && env_b.getWidth() <= tolerance)
  			return envelopeEqualsEnvelope_(env_a, env_b, tolerance,
  					progress_tracker); // treat as point
  
  		if (env_b.getHeight() <= tolerance || env_b.getWidth() <= tolerance) {// treat
  																				// as
  																				// line
  
  			boolean b_interior = false;
  
  			Envelope2D env_b_deflated = new Envelope2D(), env_b_inflated = new Envelope2D();
  			env_b_deflated.setCoords(env_b);
  			env_b_inflated.setCoords(env_b);
  
  			if (env_b.getHeight() > tolerance)
  				env_b_deflated.inflate(0, -tolerance);
  			else
  				env_b_deflated.inflate(-tolerance, 0);
  
  			env_b_inflated.inflate(tolerance, tolerance);
  
  			Point2D pt_a = new Point2D();
  
  			for (int i = 0; i < multipoint_a.getPointCount(); i++) {
  				multipoint_a.getXY(i, pt_a);
  
  				if (!env_b_inflated.contains(pt_a))
  					return false;
  
  				if (env_b.getHeight() > tolerance) {
  					if (pt_a.y > env_b_deflated.ymin
  							&& pt_a.y < env_b_deflated.ymax)
  						b_interior = true;
  				} else {
  					if (pt_a.x > env_b_deflated.xmin
  							&& pt_a.x < env_b_deflated.xmax)
  						b_interior = true;
  				}
  			}
  
  			return b_interior;
  		}
  
  		// treat as area
  
  		boolean b_interior = false;
  
  		Envelope2D env_b_deflated = new Envelope2D(), env_b_inflated = new Envelope2D();
  		env_b_deflated.setCoords(env_b);
  		env_b_inflated.setCoords(env_b);
  		env_b_deflated.inflate(-tolerance, -tolerance);
  		env_b_inflated.inflate(tolerance, tolerance);
  
  		Point2D pt_a = new Point2D();
  
  		// we loop to find a proper interior intersection (i.e. something inside
  		// instead of just on the boundary)
  		for (int i = 0; i < multipoint_a.getPointCount(); i++) {
  			multipoint_a.getXY(i, pt_a);
  
  			if (!env_b_inflated.contains(pt_a))
  				return false;
  
  			if (env_b_deflated.containsExclusive(pt_a))
  				b_interior = true;
  		}
  
  		return b_interior;
  	}