public int nextIdx() {
   int res = currPair_;
   if (pool_.size() == 1) {
     currPair_ = -1;
     res = pool_.firstInt();
   } else if (pool_.size() == 0) {
     String mssg = "pool.size() == 0";
     LOG.error(this, mssg, "");
     throw new KinGroupError(mssg);
   } else if (currPair_ != -1) {
     currPair_ = -1;
   }
   //      else if (pool_.size() == 2) {
   //         res = random(pool_.firstInt(), pool_.lastInt());
   //      }
   else {
     Int2 pair = pairs_.removeFirstPair();
     res = random(pair.b, pair.a);
     currPair_ = pair.pair(res);
   }
   if (!pool_.removeInt(res)) {
     String mssg = "!pool_.removeInt(res)";
     LOG.error(this, mssg, "");
     throw new KinGroupError(mssg);
   }
   return res;
 }
 public boolean hasNext() {
   return (pool_.size() > 0);
 }