SimpleVisitor
A visitor that throws an error for all the visit methods which it does not define, letting you only define the handlers you care about.
Value members
Abstract methods
Concrete methods
Inherited methods
==Responsibility==
Generally, whoever creates the visitor should be responsible for closing it,
i.e. not intermediate transform(v: Visitor)
methods themselves.
==Responsibility==
Generally, whoever creates the visitor should be responsible for closing it,
i.e. not intermediate transform(v: Visitor)
methods themselves.
==Self Closing==
Given that common usage is most often single-valued (e.g. "{}"),
rather than multi-valued (e.g. "{} {} {}"), Visitors may self-close
(e.g. visitor.map{v => Try(v.close); v)
} after a single value to
prevent resource leaks, but are encouraged to expose both forms
(i.e. single/multiple), if supportable.
==Multiple close() calls/Idempotency==
Visitors are encouraged to respond gracefully if close() is called multiple times.
If an underlying resource would throw if already closed, this may mean adding a
private var isClosed: Boolean
field to prevent multiple calls.