sealed trait O
object A extends O
object B extends O
object Test {
def test(x: O) =
(x, x, x, x, x, x, x, x) match {
case (A, A, A, A, A, A, A, A) => 1
case (B, B, B, B, B, B, B, B) => 2
case (_, A, A, A, A, A, A, A) => 3
case (_, B, B, B, B, B, B, B) => 4
case (_, _, A, A, A, A, A, A) => 5
case (_, _, B, B, B, B, B, B) => 6
case (_, _, _, A, A, A, A, A) => 7
case (_, _, _, B, B, B, B, B) => 8
case (_, _, _, _, A, A, A, A) => 9
case (_, _, _, _, B, B, B, B) => 10
case (_, _, _, _, _, A, A, A) => 11
case (_, _, _, _, _, B, B, B) => 12
case (_, _, _, _, _, _, A, A) => 13
case (_, _, _, _, _, _, B, B) => 14
case (_, _, _, _, _, _, _, A) => 15
case (_, _, _, _, _, _, _, B) => 16
}
}