Как использовать оператор непосредственно перед другим оператором, используя clang

Я должен использовать некоторые заявления в Clang, добавив заявление прямо перед ним. У меня есть указатель на объект Expr, с помощью которого мне нужно вставить другой оператор непосредственно перед оператором, содержащим его. Прямо сейчас я использую хакерский подход, который просто перемещает назад указатель SourceLocation, пока я не вижу a; или или {. Но это не работает для всех случаев. например, когда я пытаюсь применить для утверждения, это не удается. Есть ли класс в Clang, который предоставляет метод, чтобы сделать это более чистым способом?

РЕДАКТИРОВАТЬ: Вот фрагмент моего кода. Мне нужно вставить assert непосредственно перед оператором, содержащим разыменование указателя.

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

Ответы на вопрос(1)

Ваш ответ на вопрос