public boolean isMatchedBy(Object o) {
    if (this.criterionList.isEmpty()) {
      return false;
    }

    Iterator iterator = this.criterionList.iterator();
    while (iterator.hasNext()) {
      Criterion c = (Criterion) iterator.next();
      if (!c.isMatchedBy(o)) {
        return false;
      }
    }

    return true;
  }