code: public boolean hasSameBounds(ForAll t, ForAll s) {
          List<Type> l1 = t.tvars;
          List<Type> l2 = s.tvars;
          while (l1.nonEmpty() && l2.nonEmpty() &&
                 isSameType(l1.head.getUpperBound(),
                            subst(l2.head.getUpperBound(),
                                  s.tvars,
                                  t.tvars))) {
              l1 = l1.tail;
              l2 = l2.tail;
          }
          return l1.isEmpty() && l2.isEmpty();
      }
docs: Does t have the same bounds for quantified variables as s?