They must make all decisions (code generation, validation messages) for an annotated type based on information reachable from its AST.This means you can analyze the types' super-class, method return types, annotations etc., even transitively.But you cannot make decisions based on unrelated elements in the RoundEnvironment.Doing so will result in silent failures because too few files will be recompiled later.If your processor needs to make decisions based on a combination of otherwise unrelated elements, mark it as "aggregating" instead.