def _process_docstring(app, what, name, obj, options, lines):
    """Process the docstring for a given python object.
  Called when autodoc has read and processed a docstring. `lines` is a list
  of docstring lines that `_process_docstring` modifies in place to change
  what Sphinx outputs.
  The following settings in conf.py control what styles of docstrings will
  be parsed:
  * ``napoleon_google_docstring`` -- parse Google style docstrings
  * ``napoleon_numpy_docstring`` -- parse NumPy style docstrings
  Parameters
  ----------
  app : sphinx.application.Sphinx
      Application object representing the Sphinx process.
  what : str
      A string specifying the type of the object to which the docstring
      belongs. Valid values: "module", "class", "exception", "function",
      "method", "attribute".
  name : str
      The fully qualified name of the object.
  obj : module, class, exception, function, method, or attribute
      The object to which the docstring belongs.
  options : sphinx.ext.autodoc.Options
      The options given to the directive: an object with attributes
      inherited_members, undoc_members, show_inheritance and noindex that
      are True if the flag option of same name was given to the auto
      directive.
  lines : list of str
      The lines of the docstring, see above.
      .. note:: `lines` is modified *in place*
  """
    if hasattr(obj, 'rationale') and obj.rationale:
        lines.append('**Rationale:**')
        for line in obj.rationale.split('\n'):
            lines.append(line)
