Just had a thought: attributes are inferred for templates, so maybe the ProtoObject could have a templated empty destructor. I don't think this would work with the existing destructor implementation, but it least it could be possible.