now I write the predicates only once, not whenever I visit a methodDeclaration