docs: def compare_config(self):
          """
          show archive config differences <base_file> <new_file>.
  
          Default operation is to compare system:running-config to self.candidate_cfg
          """
          # Set defaults
          base_file = "running-config"
          base_file_system = "system:"
          if self.config_replace:
              new_file = self.candidate_cfg
          else:
              new_file = self.merge_cfg
          new_file_system = self.dest_file_system
  
          base_file_full = self._gen_full_path(
              filename=base_file, file_system=base_file_system
          )
          new_file_full = self._gen_full_path(
              filename=new_file, file_system=new_file_system
          )
  
          if self.config_replace:
              cmd = "show archive config differences {} {}".format(
                  base_file_full, new_file_full
              )
              diff = self.device.send_command_expect(cmd)
              diff = self._normalize_compare_config(diff)
          else:
              # merge
              cmd = "show archive config incremental-diffs {} ignorecase".format(
                  new_file_full
              )
              diff = self.device.send_command_expect(cmd)
              if "error code 5" in diff or "returned error 5" in diff:
                  diff = (
                      "You have encountered the obscure 'error 5' message. This generally "
                      "means you need to add an 'end' statement to the end of your merge changes."
                  )
              elif "% Invalid" not in diff:
                  diff = self._normalize_merge_diff_incr(diff)
              else:
                  cmd = "more {}".format(new_file_full)
                  diff = self.device.send_command_expect(cmd)
                  diff = self._normalize_merge_diff(diff)
  
          return diff.strip()