// NOT really permutations, just some shuffling
 private void shuffle(Integer[] a, int lim) {
   if (lim == 0) {
     Integer[] p = a.clone();
     perms.add(p);
   } else {
     shuffle(a, lim - 1);
     Integer h = a[lim];
     a[lim] = a[lim - 1];
     a[lim - 1] = h;
     shuffle(a, lim - 1);
   }
 }
 public IsTuple(List<InternalFactHandle> tupleAsList) {
   expected = tupleAsList.toArray(new InternalFactHandle[tupleAsList.size()]);
 }