There seems to be a bug in this code which is causing very large bitcodes for rare symbols - they should not get this large afaik. it may have to do with a flaw in the implementation, or be due to the fact that we are artifically forcing the tree to keep some primitive ascii characters which actually get frequency counts of 0.
I considered making a base class and then derived template classes for integer and floating point weight vectors. however I'm not sure the memory advantage for integers (the rare case) would offset the speed hit to be paid for virtual functions, and the inconvenience of dealing with different types for different coders/modelers.