001    package org.hamcrest;
002    
003    /**
004     * TODO(ngd): Document.
005     *
006     * @param <T>
007     */
008    public abstract class DiagnosingMatcher<T> extends BaseMatcher<T> {
009    
010        @Override
011        public final boolean matches(Object item) {
012            return matches(item, Description.NONE);
013        }
014    
015        @Override
016        public final void describeMismatch(Object item, Description mismatchDescription) {
017            matches(item, mismatchDescription);
018        }
019    
020        protected abstract boolean matches(Object item, Description mismatchDescription);
021    }