code: func NewSecure(root common.Hash, db *Database) (*SecureTrie, error) {
  	if db == nil {
  		panic("trie.NewSecure called without a database")
  	}
  	trie, err := New(root, db)
  	if err != nil {
  		return nil, err
  	}
  	return &SecureTrie{trie: *trie}, nil
  }
docs: // NewSecure creates a trie with an existing root node from a backing database
  // and optional intermediate in-memory node pool.
  //
  // If root is the zero hash or the sha3 hash of an empty string, the
  // trie is initially empty. Otherwise, New will panic if db is nil
  // and returns MissingNodeError if the root node cannot be found.
  //
  // Accessing the trie loads nodes from the database or node pool on demand.
  // Loaded nodes are kept around until their 'cache generation' expires.
  // A new cache generation is created by each call to Commit.
  // cachelimit sets the number of past cache generations to keep.