pub unsafe fn get_many_unchecked<'de, Input>(
    json: Input,
    tree: &PointerTree,
) -> Result<Vec<Option<LazyValue<'de>>>>
where
    Input: JsonInput<'de>,
{
    let slice = json.to_u8_slice();
    let reader = Read::new(slice, false);
    let mut parser = Parser::new(reader);
    parser.get_many(tree, false)
}
get_many returns multiple fields from the `PointerTree`.

The result is a `Result<Vec<Option<LazyValue>>>`. The order of the `Vec` is same as the order of
the tree.

If a key is unknown, the value at the corresponding position in `Vec` will be None.
If json is invalid, or the field not be found, it will return a err.

# Safety
The JSON must be valid and well-formed, otherwise it may return unexpected result.

# Examples
```
# use sonic_rs::pointer;
# use sonic_rs::PointerTree;

let json = r#"
{"u": 123, "a": {"b" : {"c": [null, "found"]}}}"#;

// build a pointer tree, representing multiple json path
let mut tree = PointerTree::new();

tree.add_path(&["u"]);
tree.add_path(&["unknown_key"]);
tree.add_path(&pointer!["a", "b", "c", 1]);

let nodes = unsafe { sonic_rs::get_many_unchecked(json, &tree) };

match nodes {
Ok(vals) => {
assert_eq!(vals[0].as_ref().unwrap().as_raw_str(), "123");
assert!(vals[1].is_none());
assert_eq!(vals[2].as_ref().unwrap().as_raw_str(), "\"found\"");
}
Err(e) => {
panic!("err: {:?}", e)
}
}
```
src/lazyvalue/get.rs