code: private void execute(MultiPolygon multiPolygon) {
  		if (index.getGeometryIndex() >= multiPolygon.getNumGeometries()) {
  			Polygon[] polygons = new Polygon[multiPolygon.getNumGeometries() + 1];
  			for (int i = 0; i < multiPolygon.getNumGeometries(); i++) {
  				polygons[i] = (Polygon) multiPolygon.getGeometryN(i);
  			}
  			LinearRing exteriorRing = multiPolygon.getGeometryFactory().createLinearRing(
  					new Coordinate[] { coordinate });
  			polygons[multiPolygon.getNumGeometries()] = multiPolygon.getGeometryFactory().createPolygon(exteriorRing,
  					null);
  			setPolygons(multiPolygon, polygons);
  		} else {
  			execute((Polygon) multiPolygon.getGeometryN(index.getGeometryIndex()));
  		}
  	}
docs: -------------------------------------------------------------------------