static Path getBasePath() {
        final String codeSourceLocation = TestStroomYamlUtil.class
                .getProtectionDomain().getCodeSource().getLocation().getPath();

        Path path = Paths.get(codeSourceLocation);

        while (path != null && !path.getFileName().toString().equals("stroom-config-app")) {
            path = path.getParent();
        }

        return path.resolve("src")
                .resolve("test")
                .resolve("resources")
                .resolve("stroom")
                .resolve("config")
                .resolve("app")
                .normalize()
                .toAbsolutePath();
    }
*** IMPORTANT ***
If the test fails it is because you have made changes to part of the
{@link stroom.util.shared.AbstractConfig} object model
and the resulting generated yaml is different to what it was before. If you are happy that
the change to the yaml matches what you expect then run {@link GenerateExpectedYaml#main} to
re-generate the expected yaml file, then the test will pass. If you are not happy then re-think
your change to the object model.
*** IMPORTANT ***
stroom-config/stroom-config-app/src/test/java/stroom/config/app/TestStroomYamlUtil.java