Como instrumentar uma declaração antes de outra usando clang

Eu tenho que instrumentar certas declarações em clang adicionando uma declaração imediatamente antes dela. Eu tenho um ponteiro para um objeto Expr usando o qual eu preciso inserir outra instrução antes da instrução que o contém. No momento, estou usando uma abordagem hacky que apenas move o ponteiro do SourceLocation para trás até ver um; ou ou {. Mas isso não funciona para todos os casos. por exemplo, quando tento instrumentar uma declaração for, ela falha. Existe alguma classe no clang que forneça um método para fazer isso de uma maneira mais limpa?

EDIT: Aqui está um trecho do meu código. Preciso inserir uma afirmação antes da declaração que contém uma desreferência de ponteiro.

bool MyRecursiveASTVisitor::VisitUnaryOperator(UnaryOperator *E){
    if (E->getOpcode() == UO_Deref ){
        Expr *e1 = E->getSubExpr();
        SourceLocation SL = E->getLocStart();
    }
    return true;
}

questionAnswers(0)

yourAnswerToTheQuestion