code: def make_decoder(output_dtype=None):
      """Decorator to create a decoder.
  
      The decorated function should have the signature `(example, feature, *args,
      **kwargs) -> decoded_example`.
  
       * `example`: Serialized example before decoding
       * `feature`: `FeatureConnector` associated with the example
       * `*args, **kwargs`: Optional additional kwargs forwarded to the function
  
      Example:
  
      ```
      @tfds.decode.make_decoder(output_dtype=tf.string)
      def no_op_decoder(example, feature):
        \"\"\"Decoder simply decoding feature normally.\"\"\"
        return feature.decode_example(example)
  
      tfds.load('mnist', split='train', decoders: {
          'image': no_op_decoder(),
      })
      ```
  
      Args:
        output_dtype: The output dtype after decoding. Required only if the decoded
          example has a different type than the `FeatureConnector.dtype` and is used
          to decode features inside sequences (ex: videos)
  
      Returns:
        The decoder object
      """  # pylint: disable=g-docstring-has-escape
  
      def decorator(fn):
          @functools.wraps(fn)
          def decorated(*args, **kwargs):
              return DecoderFn(fn, output_dtype, *args, **kwargs)
  
          return decorated
  
      return decorator
  
imports: import abc
  import functools
  from tensorflow_datasets.core.utils import tree_utils
  from tensorflow_datasets.core.utils.lazy_imports_utils import tensorflow
label_desc: Use image node_id 1 for calling a global function with example usage: make_decoder(output_dtype) and returns: decorator, decorated, DecoderFn