@Override
  public String explainFailure() {
    final Description description = new StringDescription().appendText(reason)
      .appendText("\nExpected: ").appendDescriptionOf(matcher).appendText("\n     but: ");
    matcher.describeMismatch(currentValue, description);
    return description.toString();
  }
An implementation of {@link Waiter.ExplainingPredicate} that uses Hamcrest {@link Matcher} for
both predicate evaluation and explanation.
@param <T> The type of value to be evaluated via {@link Matcher}.
hbase-common/src/test/java/org/apache/hadoop/hbase/MatcherPredicate.java