Add generic type and type pattern matching for argument lists