best practices variables hashCode equals case-classes
conditional expressions evaluation by-name by-value if-else termination
return type return statement
functions recursion
infix notation arity-1
parameters functions
sealed class
inheritance traits best practices trait interfaces override
return type return statement NonLocalReturnException syntax
higher-order functions