This is good feedback, but since my change here was not related to this code at all, but was instead removing the "stage" parameter from this function, I'd prefer to make any future changes to the collapse parameters naming and definition in a different commit.

The original intent of the parameter is this: Does the caller want the deleteVoxelCodeFromTree() to do tree collapsing. By default, the tree will not automatically be collapsed. But if the caller does want it to be collpased then they need to pass "true" to the second parameter. Of course, true vs false in the definition of the method is clear, since as you pointed out, the parameter is named... but at the caller site, it's not clear what the second parameter "true" or "false" means... and that's why I want a named constant and/or define like COLLAPSE_EMPTY_TREES and DONT_COLLAPSE. You're right that today, the only caller that asks to change the default behavior is the bitstream processor... but that's not guaranteed to always be the case, so I don't think the name of the parameter should change.

In reading your comment, I realize that what's probably confusing about this, is that since I originally used a #define, instead of a const, the code almost feels like you can change the values of these params and make the default behavior of the code behave differently. That's not the intent of those defines, and although we (Stephen and I) discussed the pros and cons for #define vs const bool, a while back, we didn't raise this particular issue in our discussion that #defines are often used in a manner you describe above. 

I think it's a really good argument for not using #defines in this manner. So I will change it in an upcoming commit.