pub fn extend_with_proofs(
        &mut self,
        instructions: Vec<TreeInstruction>,
    ) -> anyhow::Result<BlockOutputWithProofs> {
        let next_version = self.db.manifest().unwrap_or_default().version_count;
        let storage = Storage::new(&self.db, &self.hasher, next_version, true);
        let (output, patch) = storage.extend_with_proofs(instructions);
        self.db.apply_patch(patch)?;
        Ok(output)
    }
Extends this tree by creating its new version, computing an authenticity Merkle proof
for each provided instruction.

# Return value

Returns information about the update such as the final tree hash and proofs for each input
instruction.

# Errors

Proxies database I/O errors.
core/lib/merkle_tree/src/lib.rs