A software system we are working on needs to exchange lots of data between components. The data is structured in what we call trees of variables. This