    @Test
    public void testMatches() throws Exception {

        // prepare test
        AlternateConfiguration configuration = new AlternateConfiguration();
        configuration.freeRegexActive = true;
        configuration.genericRegexActive = false;
        configuration.freeRegexItems.clear();
        // java file finds Test and properties
        configuration.freeRegexItems.add(AlternateFreeRegexItem.of("^(.*?)\\.java$", "$1Test.java"));
        configuration.freeRegexItems.add(AlternateFreeRegexItem.of("^(.*?)\\.java$", "$1.properties"));
        // Test find only java
        configuration.freeRegexItems.add(AlternateFreeRegexItem.of("^(.*?)Test\\.java", "$1.java"));
        // properties find only java
        configuration.freeRegexItems.add(AlternateFreeRegexItem.of("^(.*?)\\.properties", "$1.java"));

        // make our tests

        assertArrayEquals(new Object[]{
                "|MyClass.properties",
                "|MyClassTest.java",
        }, getMatchList(new AlternateFreeRegexFileMatcher("MyClass.java", configuration)));

        assertArrayEquals(new Object[]{
                "|MyClass.java",
        }, getMatchList(new AlternateFreeRegexFileMatcher("MyClass.properties", configuration)));

        assertArrayEquals(new Object[]{
                "|MyClass.java",
                "|MyClassTest.properties",
        }, getMatchList(new AlternateFreeRegexFileMatcher("MyClassTest.java", configuration)));
    }