pub fn push(self, nibble: u8) -> Option<Self> {
        if self.nibble_count == KEY_SIZE * 2 {
            return None;
        }

        let mut child = self;
        child.nibble_count += 1;
        let last_byte_idx = self.nibble_count / 2;
        if child.nibble_count % 2 == 0 {
            // The new `nibble` is 4 lower bits
            child.bytes[last_byte_idx] += nibble;
        } else {
            // The new `nibble` is 4 upper bits of a new byte
            child.bytes[last_byte_idx] = nibble << 4;
        }
        Some(child)
    }
Pushes a nibble to the end of this sequence and returns the resulting nibble. Returns `None`
if this nibble is full.
core/lib/merkle_tree/src/types/internal.rs