code: def _delete_branch_node(self, node, trie_key):
          
          if not trie_key:
              node[-1] = BLANK_NODE
              return self._normalize_branch_node(node)
  
          node_to_delete = self.get_node(node[trie_key[0]])
  
          sub_node = self._delete(node_to_delete, trie_key[1:])
          encoded_sub_node = self._persist_node(sub_node)
  
          if encoded_sub_node == node[trie_key[0]]:
              return node
  
          node[trie_key[0]] = encoded_sub_node
          if encoded_sub_node == BLANK_NODE:
              return self._normalize_branch_node(node)
  
          return node
docs: Delete a key from inside or underneath a branch node