This fixes the GCC warning "deleting polymorphic object with non-virtual destructor". They are marked final so the virtual dispatch can be optimized out, because they don't need to be overridden.