`AbstractASTVisitorRule` is polymorphic, CRTP clang::RecursiveASTVisitor<T> is not and have public destructor. To avoid to use `clang::RecursiveASTVisitor<T>` as base pointer, I use protected inheritance and to allow CRTP to see inheritance correctly, I give him access throw `friend`.
Without this change, I got the warning of this new rule.