Value and Reference type Unions with pattern matching