code: public MultiPolygon fromTransferObject(MultiPolygonTo input, CrsId crsId) {
  
          if (input == null) { return null; }
          crsId = getCrsId(input, crsId);
          isValid(input);
  
          Polygon[] polygons = new Polygon[input.getCoordinates().length];
          for (int i = 0; i < polygons.length; i++) {
              polygons[i] = createPolygon(input.getCoordinates()[i], crsId);
          }
          return new MultiPolygon(polygons);
      }
docs: Creates a multipolygon object starting from a transfer object.
  
  @param input the multipolygon transfer object
  @param crsId the crs id to use (ignores the crs of the input). If null, uses the crs of the input.
  @return the corresponding geometry
  @throws IllegalArgumentException If the geometry could not be constructed due to an invalid transfer object