add type reference nodes
introduce identifier to represent value with type
add type declaration to function argument
add type declaration to function argument
add type annotation to local variables
add type checker for type parameter
add type checker for local variable
add return type to function declaration
add error report tests for function return type