docs: def _process_templates(self,
                             template_dir,
                             extra_context,
                             output_dir,
                             overwrite=True):
          """
          Process templates as found in the named directory.
  
          :param template_dir: A string containing an absolute or relative path
           to a directory where the templates are located. If the provided
           directory is a relative path, it is resolved using a known location.
          :param extra_context: A dict of values that are used to override
           default or user specified values.
          :param output_dir: An string with an absolute path to a directory where
           the templates should be written to.
          :param overwrite: An optional bool whether or not to overwrite existing
           templates.
          :return: None
          """
          template_dir = self._resolve_template_dir(template_dir)
          self._validate_template_dir(template_dir)
  
          try:
              cookiecutter.main.cookiecutter(
                  template_dir,
                  extra_context=extra_context,
                  output_dir=output_dir,
                  overwrite_if_exists=overwrite,
                  no_input=True,
              )
          except cookiecutter.exceptions.NonTemplatedInputDirException:
              util.sysexit_with_message("The specified template directory (" +
                                        str(template_dir) +
                                        ") is in an invalid format")