code: public MultiPoint fromTransferObject(MultiPointTo input, CrsId crsId) {
  
          if (input == null) { return null; }
          crsId = getCrsId(input, crsId);
          isValid(input);
  
          Point[] points = new Point[input.getCoordinates().length];
          for (int i = 0; i < points.length; i++) {
              points[i] = createPoint(input.getCoordinates()[i], crsId);
          }
          return new MultiPoint(points);
      }
docs: Creates a multipoint object starting from a transfer object.
  
  @param input the multipoint 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