code: def _write_tree(self, tree: dict, output: Union[str, BinaryIO], file_mode: int=0o666) -> None:
          
          self.meta["created_at"] = get_datetime_now()
          meta = self.meta.copy()
          meta["environment"] = collect_environment()
          final_tree = {}
          final_tree.update(tree)
          final_tree["meta"] = meta
          isfileobj = not isinstance(output, str)
          if not isfileobj:
              self._source = output
              path = output
              output = open(output, "wb")
              os.chmod(path, file_mode)
              pos = 0
          else:
              pos = output.tell()
          try:
              with asdf.AsdfFile(final_tree) as file:
                  queue = [("", tree)]
                  while queue:
                      path, element = queue.pop()
                      if isinstance(element, dict):
                          for key, val in element.items():
                              queue.append((path + "/" + key, val))
                      elif isinstance(element, (list, tuple)):
                          for child in element:
                              queue.append((path, child))
                      elif isinstance(element, numpy.ndarray):
                          path += "/"
                          if path not in self._compression_prefixes:
                              self._log.debug("%s -> %s compression", path, self.ARRAY_COMPRESSION)
                              file.set_array_compression(element, self.ARRAY_COMPRESSION)
                          else:
                              self._log.debug("%s -> compression disabled", path)
                  file.write_to(output)
              self._size = output.seek(0, os.SEEK_END) - pos
          finally:
              if not isfileobj:
                  output.close()
docs: Write the model to disk.
  
          :param tree: The data dict - will be the ASDF tree.
          :param output: The output file path or a file object.
          :param file_mode: The output file's permissions.
          :return: None