/**
     * Encoding eventual metadata that come along with this coverage
     *
     * <pre>{@code
     * <gmlcov:metadata>
     *    <gmlcov:Extension>
     *       <myNS:metadata>Some metadata ...</myNS:metadata>
     *    </gmlcov:Extension>
     * </gmlcov:metadata>
     * }</pre>
     *
     * @param context Can be either a {@link GridCoverage2DReader} or a {@link GridCoverage2D},
     *     depending on how the method is invoked
     * @throws IOException
     */
    public void handleMetadata(Object context, WCSDimensionsHelper dimensionsHelper)
        throws IOException {
      start("gmlcov:metadata");
      start("gmlcov:Extension");

      if (dimensionsHelper != null) {

        // handle time if necessary
        handleTimeMetadata(dimensionsHelper);

        // handle elevation if necessary
        handleElevationMetadata(dimensionsHelper);

        // handle additional dimensions if necessary
        handleAdditionalDimensionMetadata(dimensionsHelper);
      }

      for (WCS20CoverageMetadataProvider extension : extensions) {
        extension.encode(translator, context);
      }

      end("gmlcov:Extension");
      end("gmlcov:metadata");
    }