use ast = "../ast"
trait val Rule
fun val name(): String
fun val message(): String "An informative message for issues found by this rule"
fun val should_apply(config: Config val): Bool
fun val analyze(tree: ast.Node, issues: Seq[Issue] iso)
: (ast.Node, Seq[Issue] iso^, ReadSeq[ast.TraverseError] val)
fun val fix(tree: ast.Node, issues: ReadSeq[Issue] val)
: (ast.Node, ReadSeq[Issue] val, ReadSeq[ast.TraverseError] val)
"""
Returns the result of fixing zero or more of the given issues, plus the
unfixed issues.
"""