A simple thing I missed that we'll need for the config output, high level set/delete operations, and other things.
Reference_tree module should have functions
```
val is_tag : t -> string list -> bool
val is_leaf : t -> string list -> bool
val is_valueless : t -> string list -> bool
val get_keep_order : t -> string list -> bool
val get_owner : t -> string list -> string option
val get_help_string : t -> string list ->string
```
Implementation is pretty much identical to is_multi, except for is_tag and is_leaf where you need to pattern match on the value since node_type is three-state sum type rather than bool, like
```
let is_tag reftree path =
let data = Vytree.get_data reftree path in
match data.node_type with
| Tag -> true
| _ -> false
```
Checklist for those who want to take it up:
# Add type signatures to src/reference_tree.mli
# Add implementations to src/reference_tree.ml
# Add tests to test/reference_tree_test.ml
The file used in reference tree tests is tests/data/interface_definition_sample.xml, all kinds of data required for these tests is already there in the file.