private boolean invokeAndMatch(Annotation item, Method method, Description mismatchDescription) {
        try {
            Object value = method.invoke(item);

            if (!valueMatcher.matches(value)) {
                valueMatcher.describeMismatch(value, mismatchDescription);
                return false;
            }
        } catch (Exception e) {
            mismatchDescription.appendText(e.getMessage());
            return false;
        }

        return true;
    }