code: func gatherChildren(n node, children *[]common.Hash) {
  	switch n := n.(type) {
  	case *rawShortNode:
  		gatherChildren(n.Val, children)
  
  	case rawFullNode:
  		for i := 0; i < 16; i++ {
  			gatherChildren(n[i], children)
  		}
  	case hashNode:
  		*children = append(*children, common.BytesToHash(n))
  
  	case valueNode, nil:
  
  	default:
  		panic(fmt.Sprintf("unknown node type: %T", n))
  	}
  }
docs: // gatherChildren traverses the node hierarchy of a collapsed storage node and
  // retrieves all the hashnode children.