docs: def update(self, other=None, **kwargs):
          '''Takes the same arguments as the update method in the builtin dict
          class. However, this version returns a new ImmutableDict instead of
          modifying in-place.'''
          copydict = ImmutableDict()
          if other:
              vallist = [(hash(key), (key, other[key])) for key in other]
          else: vallist = []
          if kwargs:
              vallist += [(hash(key), (key, kwargs[key])) for key in kwargs]
          copydict.tree = self.tree.multi_assoc(vallist)
          copydict._length = iter_length(copydict.tree)
          return copydict