class_docstr: Helper class to promote private subclass docstring to public counterpart.
  
  Example:
  
  ```python
  class TransformedDistribution(Distribution):
    @distribution_util.AppendDocstring(
      additional_note="A special note!",
      kwargs_dict={"foo": "An extra arg."})
    def _prob(self, y, foo=None):
      pass
  ```
  
  In this case, the `AppendDocstring` decorator appends the `additional_note` to
  the docstring of `prob` (not `_prob`) and adds a new `kwargs`
  section with each dictionary item as a bullet-point.
  
  For a more detailed example, see `TransformedDistribution`.
code: def __call__(self, fn):
      @functools.wraps(fn)
      def _fn(*args, **kwargs):
          return fn(*args, **kwargs)
  
      if _fn.__doc__ is None:
          _fn.__doc__ = self._additional_note
      else:
          _fn.__doc__ += "\n%s" % self._additional_note
      return _fn
  
imports: import functools
  import hashlib
  import numpy
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import tensor_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import array_ops_stack
  from tensorflow.python.ops import check_ops
  from tensorflow.python.ops import cond
  from tensorflow.python.ops import control_flow_ops
  from tensorflow.python.ops import linalg_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn
  from tensorflow.python.util import tf_inspect
label_desc: Use image node_id 2 for calling the AppendDocstring obj's underlying member method code with example usage: obj.__call__(fn) and returns: _fn, fn