When you use the underscore suffix, Neo generates the get/set, and it also generates
lifecycle methods that let you intervene as the property is accessed or set.

For example, if you define the property `foo_`, Neo will generate these methods.

- `beforeSetFoo(value, oldValue)` &mdash; returns the value to be used for the set
- `afterSetFoo(value, oldValue)`
- `beforeGetFoo(value)` &mdash; returns a value