private static boolean evaluatePairing ()
  {
    int toprank = 0;
    int botrank = 0;
    int topind  = 0;
    int botind  = 0;

    // gather the rank count data
    for (int i=Rank.NUM_RANK-1; i>=0; i--)
      {
	//int rankhashi = _rankhash[i];
	int rankhashi = (int)((_rankhash>>(4*i)) & 0xF);
	if (rankhashi > toprank)
	  {
	    botrank = toprank;
	    botind  = topind;
	    toprank = rankhashi;
	    topind  = i;
	  }
	else if (rankhashi > botrank)
	  {
	    botrank = rankhashi;
	    botind  = i;
	  }
      }

    // now pick the right hand from the data
    switch (toprank)
      {
      case 4:
	setFourOfAKind (topind, botind);
	return true;

      case 3:
	if (botrank > 1)
	  {
	    setFullHouse (topind, botind);
	    return true;
	  }
	else
	  {
	    setThreeOfAKind (topind);
	    return true;
	  }

      case 2:
	if (botrank > 1)
	  {
	    setTwoPair (topind, botind);
	    return true;
	  }
	else
	  {
	    setOnePair (topind);
	    return true;
	  }

      default:
	setNoPair ();
	return false;
      }
  }