lambda expression pattern matching uses a similar mechanism as the `Name.Of` usage pattern matching
invalid uses of `Name.Of` are now caught at build time (TODO: an exhaustive test case suite)