code: def _delete(self, node, key):
          
          # sys.stderr.write('del\n')
          node_type = self._get_node_type(node)
          if node_type == NODE_TYPE_BLANK:
              return BLANK_NODE
  
          if node_type == NODE_TYPE_BRANCH:
              return self._delete_branch_node(node, key)
  
          if is_key_value_type(node_type):
              return self._delete_kv_node(node, key)
docs: update item inside a node
  
          :param node: node in form of list, or BLANK_NODE
          :param key: nibble list without terminator
              .. note:: key may be []
          :return: new node
  
          if this node is changed to a new node, it's parent will take the
          responsibility to *store* the new node storage, and delete the old
          node storage