# `ExAST.Index.Plan`
[🔗](https://github.com/elixir-vibe/ex_ast/blob/v0.11.0/lib/ex_ast/index/plan.ex#L1)

Indexable summary of an ExAST pattern or selector.

The plan is advisory: callers may use the terms to retrieve candidates, but
must still verify matches with ExAST to preserve exact semantics.

# `t`

```elixir
@type t() :: %ExAST.Index.Plan{
  candidate_groups: [MapSet.t(String.t())],
  negative_terms: MapSet.t(String.t()),
  optional_terms: MapSet.t(String.t()),
  required_terms: MapSet.t(String.t()),
  requires_comments?: boolean(),
  requires_source?: boolean()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
