While not very strict, `init()` is usually used to initialize property values, set default values, check if required property is set.

If a widget needs to support the usage `begin()` and `end()`, then `init()` may also need to render the opening tag.

Other than these, the main work is better done in `run()`.