code: static boolean multiPointRelateMultiPoint_(MultiPoint multipoint_a,
  			MultiPoint multipoint_b, double tolerance, String scl,
  			ProgressTracker progress_tracker) {
  		RelationalOperationsMatrix relOps = new RelationalOperationsMatrix();
  		relOps.resetMatrix_();
  		relOps.setPredicates_(scl);
  		relOps.setPointPointPredicates_();
  
  		Envelope2D env_a = new Envelope2D(), env_b = new Envelope2D();
  		multipoint_a.queryEnvelope2D(env_a);
  		multipoint_b.queryEnvelope2D(env_b);
  
  		boolean bRelationKnown = false;
  		boolean b_disjoint = RelationalOperations.envelopeDisjointEnvelope_(
  				env_a, env_b, tolerance, progress_tracker);
  
  		if (b_disjoint) {
  			relOps.pointPointDisjointPredicates_();
  			bRelationKnown = true;
  		}
  
  		if (!bRelationKnown) {
  			EditShape edit_shape = new EditShape();
  			int geom_a = edit_shape.addGeometry(multipoint_a);
  			int geom_b = edit_shape.addGeometry(multipoint_b);
  			relOps.setEditShapeCrackAndCluster_(edit_shape, tolerance,
  					progress_tracker);
  			relOps.computeMatrixTopoGraphClusters_(geom_a, geom_b);
  			relOps.m_topo_graph.removeShape();
  		}
  
  		boolean bRelation = relationCompare_(relOps.m_matrix, relOps.m_scl);
  		return bRelation;
  	}
docs: Returns true if the relation holds.