title: Non-exhaustive Pattern Match Warning with Tuple
body: <p>Given the following <code>sealed trait</code>:</p>
  
  <pre><code>scala&gt; sealed trait Parent
  defined trait Parent
  
  scala&gt; case object Boy extends Parent
  defined object Boy
  
  scala&gt; case object Girl extends Parent
  defined object Girl
  </code></pre>
  
  <p>And given <code>xs</code>:</p>
  
  <pre><code>scala&gt; val xs: (Parent, (Seq[Int], Seq[Int])) = (Boy, (Nil, Nil))
  xs: (Parent, (Seq[Int], Seq[Int])) = (Boy,(List(),List()))
  
  scala&gt; xs match { 
       |   case (Boy, (Nil, Nil))     =&gt; 1
       |   case (Boy, (ys, a :: as))  =&gt; 2
       |   case (Boy, (ys, Nil))      =&gt; 3
       |   case (Girl, (Nil, Nil))    =&gt; 4
       |   case (Girl, (a :: as, ys)) =&gt; 5
       |   case (Girl, (Nil, ys))     =&gt; 6
       | }
  &lt;console&gt;:15: warning: match may not be exhaustive.
  It would fail on the following inputs: (Boy, _), (Girl, _)
         xs match {
         ^
  res1: Int = 1
  </code></pre>
  
  <p>I don't understand this inexhaustive match warning. What do <code>(Boy, _)</code> and <code>(Girl, _)</code> mean? </p>
  
  <p>I'm not sure how the <code>(Seq[Int], Seq[Int])</code> could have any other match than what I have on the right-hand side.</p>