This implementation is based on Boundables rather than AbstractNodes, because the STR algorithm operates on both nodes and data, both of which are treated as Boundables.
This class is thread-safe. Building the tree is synchronized, and querying is stateless.
The returned Lists contain either Object items, or Lists which correspond to subtrees of the tree Subtrees which do not contain any items are not included.
Builds the tree if necessary.