docs: public boolean matches(Iterable<? extends T> target) {
          if ((target instanceof Collection) && ((Collection<?>) target).size() != matchers.size()) {
              return false;
          }
          Iterator<? extends ElementMatcher<? super T>> iterator = matchers.iterator();
          for (T value : target) {
              if (!iterator.hasNext() || !iterator.next().matches(value)) {
                  return false;
              }
          }
          return true;
      }