docs: def write_file(self, filename=None, buffer=None, fileobj=None):
          """Write this NBT file to a file."""
          closefile = True
          if buffer:
              self.filename = None
              self.file = buffer
              closefile = False
          elif filename:
              self.filename = filename
              self.file = GzipFile(filename, "wb")
          elif fileobj:
              self.filename = None
              self.file = GzipFile(fileobj=fileobj, mode="wb")
          elif self.filename:
              self.file = GzipFile(self.filename, "wb")
          elif not self.file:
              raise ValueError(
                  "NBTFile.write_file(): Need to specify either a "
                  "filename or a file object"
              )
          # Render tree to file
          TAG_Byte(self.id)._render_buffer(self.file)
          TAG_String(self.name)._render_buffer(self.file)
          self._render_buffer(self.file)
          # make sure the file is complete
          try:
              self.file.flush()
          except (AttributeError, IOError):
              pass
          if closefile:
              try:
                  self.file.close()
              except (AttributeError, IOError):
                  pass