by name parameter
While DSL
pattern matching