class DefaultFailureInterpreter implements FailureInterpreter {

    public boolean shouldTrip(Throwable cause) {
        for(Class<?> clazz : ignore) {
            if (clazz.isInstance(cause)) {
                return false;
            }
        }

        // if Exception is of specified type, and window conditions exist,
        // keep circuit open unless exception threshold has passed
        if (hasWindowConditions()) {
            counter.mark();
            // Trip if the exception count has passed the limit
            return (counter.tally() > limit);
        }

        return true;
    }

    public  DefaultFailureInterpreter();
    public  DefaultFailureInterpreter(int limit, long windowMillis);
    public  DefaultFailureInterpreter(Class<? extends Throwable>[] ignore);
    public  DefaultFailureInterpreter(Class<? extends Throwable>[] ignore,
                                     int limit, long windowMillis);

}