public static RuleFilter of(
            BiPredicate<ClientRequestContext, RequestHeaders> requestHeadersFilter,
            @Nullable BiPredicate<ClientRequestContext, ResponseHeaders> responseHeadersFilter,
            @Nullable BiPredicate<ClientRequestContext, HttpHeaders> responseTrailersFilter,
            @Nullable BiPredicate<ClientRequestContext, HttpHeaders> grpcTrailersFilter,
            @Nullable BiPredicate<ClientRequestContext, Throwable> exceptionFilter,
            @Nullable BiPredicate<ClientRequestContext, Duration> totalDurationFilter,
            boolean hasResponseFilter) {

        return new RuleFilter(requestHeadersFilter, exceptionFilter, responseHeadersFilter,
                              responseTrailersFilter, grpcTrailersFilter, totalDurationFilter,
                              hasResponseFilter);
    }
Merges the filters of {@link AbstractRuleBuilder} that returns {@code true}
if all rules in the {@link AbstractRuleBuilder} match
a given {@link ClientRequestContext} and {@link Throwable}.
core/src/main/java/com/linecorp/armeria/internal/client/RuleFilter.java