docs: public GridCoverage2D call() {
          try {
              BufferedImage coverageImage = this.tiledLayer.createBufferedImage(
                      this.tilePreparationInfo.getImageWidth(),
                      this.tilePreparationInfo.getImageHeight());
              Graphics2D graphics = coverageImage.createGraphics();
              try {
                  for (SingleTilePreparationInfo tileInfo: this.tilePreparationInfo.getSingleTiles()) {
                      final TileTask task;
                      if (tileInfo.getTileRequest() != null) {
                          task = new SingleTileLoaderTask(
                                  tileInfo.getTileRequest(), this.errorImage, tileInfo.getTileIndexX(),
                                  tileInfo.getTileIndexY(), this.failOnError, this.registry, this.context);
                      } else {
                          task = new PlaceHolderImageTask(this.tiledLayer.getMissingTileImage(),
                                                          tileInfo.getTileIndexX(), tileInfo.getTileIndexY());
                      }
                      Tile tile = task.call();
                      if (tile.getImage() != null) {
                          graphics.drawImage(tile.getImage(),
                                             tile.getxIndex() * this.tiledLayer.getTileSize().width,
                                             tile.getyIndex() * this.tiledLayer.getTileSize().height, null);
                      }
                  }
              } finally {
                  graphics.dispose();
              }
  
              GridCoverageFactory factory = CoverageFactoryFinder.getGridCoverageFactory(null);
              GeneralEnvelope gridEnvelope = new GeneralEnvelope(this.tilePreparationInfo.getMapProjection());
              gridEnvelope.setEnvelope(this.tilePreparationInfo.getGridCoverageOrigin().x,
                                       this.tilePreparationInfo.getGridCoverageOrigin().y,
                                       this.tilePreparationInfo.getGridCoverageMaxX(),
                                       this.tilePreparationInfo.getGridCoverageMaxY());
              return factory.create(this.tiledLayer.createCommonUrl(), coverageImage, gridEnvelope,
                                    null, null, null);
          } catch (Exception e) {
              throw ExceptionUtils.getRuntimeException(e);
          }
      }