docs: static boolean polylineRelatePolyline_(Polyline polyline_a,
  			Polyline polyline_b, double tolerance, String scl,
  			ProgressTracker progress_tracker) {
  		RelationalOperationsMatrix relOps = new RelationalOperationsMatrix();
  		relOps.resetMatrix_();
  		relOps.setPredicates_(scl);
  		relOps.setLineLinePredicates_();
  
  		Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D();
  		polyline_a.queryEnvelope2D(env_a);
  		polyline_b.queryEnvelope2D(env_b);
  
  		boolean bRelationKnown = false;
  		boolean b_disjoint = RelationalOperations.envelopeDisjointEnvelope_(
  				env_a, env_b, tolerance, progress_tracker);
  
  		if (b_disjoint) {
  			relOps.lineLineDisjointPredicates_(polyline_a, polyline_b);
  			bRelationKnown = true;
  		}
  
  		if (!bRelationKnown) {
  			// Quick rasterize test to see whether the the geometries are
  			// disjoint, or if one is contained in the other.
  			int relation = RelationalOperations
  					.tryRasterizedContainsOrDisjoint_(polyline_a, polyline_b,
  							tolerance, false);
  
  			if (relation == RelationalOperations.Relation.disjoint) {
  				relOps.lineLineDisjointPredicates_(polyline_a, polyline_b);
  				bRelationKnown = true;
  			}
  		}
  
  		if (!bRelationKnown) {
  			EditShape edit_shape = new EditShape();
  			int geom_a = edit_shape.addGeometry(polyline_a);
  			int geom_b = edit_shape.addGeometry(polyline_b);
  			relOps.setEditShapeCrackAndCluster_(edit_shape, tolerance,
  					progress_tracker);
  			relOps.m_cluster_index_a = relOps.m_topo_graph
  					.createUserIndexForClusters();
  			relOps.m_cluster_index_b = relOps.m_topo_graph
  					.createUserIndexForClusters();
  			markClusterEndPoints_(geom_a, relOps.m_topo_graph,
  					relOps.m_cluster_index_a);
  			markClusterEndPoints_(geom_b, relOps.m_topo_graph,
  					relOps.m_cluster_index_b);
  			relOps.computeMatrixTopoGraphHalfEdges_(geom_a, geom_b);
  			relOps.m_topo_graph
  					.deleteUserIndexForClusters(relOps.m_cluster_index_a);
  			relOps.m_topo_graph
  					.deleteUserIndexForClusters(relOps.m_cluster_index_b);
  			relOps.m_topo_graph.removeShape();
  		}
  
  		boolean bRelation = relationCompare_(relOps.m_matrix, relOps.m_scl);
  		return bRelation;
  	}