Invoke passed function in 3 different modes: lazy, deferred, immediate.
Set and get values on objects via dot-notation or array notation strings.
Lint your project structure against architecture rules