docs: static protected int isSimplePlanar(/* const */Geometry geometry, /* const */
  	SpatialReference spatialReference, boolean bForce,
  			ProgressTracker progressTracker) {
  		assert (false); // this code is not called yet.
  		if (geometry.isEmpty())
  			return 1;
  		Geometry.Type gt = geometry.getType();
  		if (gt == Geometry.Type.Point)
  			return 1;
  		else if (gt == Geometry.Type.Envelope) {
  			Envelope2D env2D = new Envelope2D();
  			geometry.queryEnvelope2D(env2D);
  			boolean bReturnValue = !env2D.isDegenerate(InternalUtils
  					.calculateToleranceFromGeometry(spatialReference, geometry,
  							false));
  			return bReturnValue ? 1 : 0;
  		} else if (Geometry.isSegment(gt.value())) {
  			throw GeometryException.GeometryInternalError();
  			// return seg.IsSimple(m_tolerance);
  		} else if (!Geometry.isMultiVertex(gt.value())) {
  			throw GeometryException.GeometryInternalError();// What else?
  		}
  
  		double tolerance = InternalUtils.calculateToleranceFromGeometry(
  				spatialReference, geometry, false);
  
  		double geomTolerance = 0;
  		int isSimple = ((MultiVertexGeometryImpl) geometry._getImpl())
  				.getIsSimple(tolerance);
  		int knownSimpleResult = bForce ? -1 : isSimple;
  		// TODO: need to distinguish KnownSimple between SimpleAsFeature and
  		// SimplePlanar. The SimplePlanar implies SimpleAsFeature.
  		if (knownSimpleResult != -1)
  			return knownSimpleResult;
  
  		if (knownSimpleResult == GeometryXSimple.Weak) {
  			assert (tolerance <= geomTolerance);
  			tolerance = geomTolerance;// OVERRIDE the tolerance.
  		}
  
  		OperatorSimplifyLocalHelper helper = new OperatorSimplifyLocalHelper(
  				geometry, spatialReference, knownSimpleResult, progressTracker,
  				false);
  		knownSimpleResult = helper.isSimplePlanarImpl_();
  		((MultiVertexGeometryImpl) geometry._getImpl()).setIsSimple(
  				knownSimpleResult, tolerance, false);
  		return knownSimpleResult;
  	}