docs: def _maybe_log_technical_terms(global_options, tool_options):
      """Log technical terms as appropriate if the user requested it.
  
      As a side effect, if --log-technical-terms-to is passed to the linter
      then open up the file specified (or create it) and then merge the set
      of technical words that we have now with the technical words already
      in it.
      """
      log_technical_terms_to_path = global_options.get("log_technical_terms_to",
                                                       None)
      log_technical_terms_to_queue = tool_options.get("log_technical_terms_to",
                                                      None)
      if log_technical_terms_to_path:
          assert log_technical_terms_to_queue is not None
  
          try:
              os.makedirs(os.path.dirname(log_technical_terms_to_path))
          except OSError as error:
              if error.errno != errno.EEXIST:
                  raise error
  
          if not log_technical_terms_to_queue.empty():
              with closing(os.fdopen(os.open(log_technical_terms_to_path,
                                             os.O_RDWR | os.O_CREAT),
                                     "r+")) as terms_file:
                  # pychecker can't see through the handle returned by closing
                  # so we need to suppress these warnings.
                  terms = set(terms_file.read().splitlines())
                  new_terms = set(freduce(lambda x, y: x | y,
                                          _drain(log_technical_terms_to_queue)))
  
                  if not terms.issuperset(new_terms):
                      terms_file.seek(0)
                      terms_file.truncate(0)
                      terms_file.write("\n".join(list(terms |
                                                      set(new_terms))))