use same expected type for or-patterns (closes #2459)
allow multiple structural extension (closes #2364)