code: public static Geometry[] cut(Geometry cuttee, Polyline cutter,
  			SpatialReference spatialReference) {
  		if (cuttee == null || cutter == null)
  			return null;
  
  		OperatorCut op = (OperatorCut) factory.getOperator(Operator.Type.Cut);
  		GeometryCursor cursor = op.execute(true, cuttee, cutter,
  				spatialReference, null);
  		ArrayList<Geometry> cutsList = new ArrayList<Geometry>();
  
  		Geometry geometry;
  		while ((geometry = cursor.next()) != null) {
  			if (!geometry.isEmpty()) {
  				cutsList.add(geometry);
  			}
  		}
  
  		return cutsList.toArray(new Geometry[0]);
  	}
docs: Calculates the cut geometry from a target geometry using a polyline. For
  Polylines, all left cuts will be grouped together in the first Geometry,
  Right cuts and coincident cuts are grouped in the second Geometry, and
  each undefined cut, along with any uncut parts, are output as separate
  Polylines. For Polygons, all left cuts are grouped in the first Polygon,
  all right cuts are in the second Polygon, and each undefined cut, along
  with any left-over parts after cutting, are output as a separate Polygon.
  If there were no cuts then the array will be empty. An undefined cut will
  only be produced if a left cut or right cut was produced, and there was a
  part left over after cutting or a cut is bounded to the left and right of
  the cutter.
  
  See OperatorCut.
  
  @param cuttee
  The geometry to be cut.
  @param cutter
  The polyline to cut the geometry.
  @param spatialReference
  The spatial reference of the geometries.
  @return An array of geometries created from cutting.