    @Test
    public void testMatchMethodOrConstructor() {

        List<MethodToLog> methodToLogs = new Gson()
                .fromJson(METHODS_TO_LOG, new TypeToken<List<MethodToLog>>() {
                }.getType());

        Set<Member> methods = new HashSet<>();
        methods.addAll(Arrays.asList(TestMatchMethod.class.getDeclaredMethods()));
        methods.addAll(Arrays.asList(TestMatchMethod.class.getDeclaredConstructors()));
        methods.addAll(Arrays.asList(TestMatchMethod.InnerClass.class.getDeclaredMethods()));
        methods.addAll(Arrays.asList(TestMatchMethod.InnerClass.class.getDeclaredConstructors()));
        methods.addAll(Arrays.asList(TestMatchMethod.StaticNestedClass.class.getDeclaredMethods()));
        methods.addAll(
                Arrays.asList(TestMatchMethod.StaticNestedClass.class.getDeclaredConstructors()));

        for (Member member : methods) {
            int matchCount = 0;

            for (MethodToLog methodToLog : methodToLogs) {
                if (methodToLog.matchMethodOrConstructor(member)) {
                    matchCount++;
                }
            }

            // ensure every method match 1 time
            assertThat(matchCount, is(1));
        }

        // ensure every method is tested
        assertThat(methodToLogs.size(), is(methods.size()));
    }