My solution (in other work) is to treat nonBasics as leaves but allow them in the tree.  This requires more isinstance checks but allows for fewer magical objects like Symbol or Integer.