docs: def visit_FunctionDef(self, node, **kwargs):
          """
          Handles function definitions within code.
  
          Process a function's docstring, keeping well aware of the function's
          context and whether or not it's part of an interface definition.
          """
          if self.options.debug:
              stderr.write("# Function {0.name}{1}".format(node, linesep))
          # Push either 'interface' or 'class' onto our containing nodes
          # hierarchy so we can keep track of context.  This will let us tell
          # if a function is nested within another function or even if a class
          # is nested within a function.
          containingNodes = kwargs.get('containingNodes') or []
          containingNodes.append((node.name, 'function'))
          if self.options.topLevelNamespace:
              fullPathNamespace = self._getFullPathName(containingNodes)
              contextTag = '.'.join(pathTuple[0] for pathTuple in fullPathNamespace)
              modifiedContextTag = self._processMembers(node, contextTag)
              tail = '@namespace {0}'.format(modifiedContextTag)
          else:
              tail = self._processMembers(node, '')
          if get_docstring(node):
              self._processDocstring(node, tail,
                                     containingNodes=containingNodes)
          # Visit any contained nodes.
          self.generic_visit(node, containingNodes=containingNodes)
          # Remove the item we pushed onto the containing nodes hierarchy.
          containingNodes.pop()