pub fn read<T: DeserializeOwned, R: Reader + ?Sized>(
    reader: &mut R,
    deserialize: impl Fn(&[u8]) -> Result<T>,
    pointer: SizedPointer
) -> Result<T>