docs: static int tryRasterizedContainsOrDisjoint_(Geometry geom_a,
  			Geometry geom_b, double tolerance, boolean bExtraTestForIntersects) {
  		int gtA = geom_a.getType().value();
  		int gtB = geom_b.getType().value();
  		do {
  			if (Geometry.isMultiVertex(gtA)) {
  				MultiVertexGeometryImpl impl = (MultiVertexGeometryImpl) geom_a
  						._getImpl();
  				GeometryAccelerators accel = impl._getAccelerators();
  				if (accel != null) {
  					RasterizedGeometry2D rgeom = accel.getRasterizedGeometry();
  					if (rgeom != null) {
  						if (gtB == Geometry.GeometryType.Point) {
  							Point2D ptB = ((Point) geom_b).getXY();
  							RasterizedGeometry2D.HitType hit = rgeom
  									.queryPointInGeometry(ptB.x, ptB.y);
  							if (hit == RasterizedGeometry2D.HitType.Inside) {
  								return Relation.contains;
  							} else if (hit == RasterizedGeometry2D.HitType.Outside) {
  								return Relation.disjoint;
  							}
  							break;
  						}
  						Envelope2D env_b = new Envelope2D();
  						geom_b.queryEnvelope2D(env_b);
  						RasterizedGeometry2D.HitType hit = rgeom
  								.queryEnvelopeInGeometry(env_b);
  						if (hit == RasterizedGeometry2D.HitType.Inside) {
  							return Relation.contains;
  						} else if (hit == RasterizedGeometry2D.HitType.Outside) {
  							return Relation.disjoint;
  						} else if (bExtraTestForIntersects
  								&& Geometry.isMultiVertex(gtB)) {
  							if (checkVerticesForIntersection_(
  									(MultiVertexGeometryImpl) geom_b._getImpl(),
  									rgeom)) {
  								return Relation.intersects;
  							}
  						}
  
  						break;
  					}
  				}
  			}
  		} while (false);
  
  		do {
  			if (Geometry.isMultiVertex(gtB)) {
  				MultiVertexGeometryImpl impl = (MultiVertexGeometryImpl) geom_b
  						._getImpl();
  				GeometryAccelerators accel = impl._getAccelerators();
  				if (accel != null) {
  					RasterizedGeometry2D rgeom = accel.getRasterizedGeometry();
  					if (rgeom != null) {
  						if (gtA == Geometry.GeometryType.Point) {
  							Point2D ptA = ((Point) geom_a).getXY();
  							RasterizedGeometry2D.HitType hit = rgeom
  									.queryPointInGeometry(ptA.x, ptA.y);
  							if (hit == RasterizedGeometry2D.HitType.Inside) {
  								return Relation.within;
  							} else if (hit == RasterizedGeometry2D.HitType.Outside) {
  								return Relation.disjoint;
  							}
  							break;
  						}
  
  						Envelope2D env_a = new Envelope2D();
  						geom_a.queryEnvelope2D(env_a);
  						RasterizedGeometry2D.HitType hit = rgeom
  								.queryEnvelopeInGeometry(env_a);
  						if (hit == RasterizedGeometry2D.HitType.Inside) {
  							return Relation.within;
  						} else if (hit == RasterizedGeometry2D.HitType.Outside) {
  							return Relation.disjoint;
  						} else if (bExtraTestForIntersects
  								&& Geometry.isMultiVertex(gtA)) {
  							if (checkVerticesForIntersection_(
  									(MultiVertexGeometryImpl) geom_a._getImpl(),
  									rgeom)) {
  								return Relation.intersects;
  							}
  						}
  
  						break;
  					}
  				}
  			}
  		} while (false);
  
  		return Relation.unknown;
  	}