class GuiceMatcherLoader implements MatcherLoader {

    @Override
    public Matcher getMatcher(MatcherConfig config) throws MessagingException {
        try {
            ClassName className = new ClassName(config.getMatcherName());
            Matcher result = genericLoader.<Matcher>withNamingSheme(MATCHER_NAMING_SCHEME)
                .instantiate(className);
            result.init(config);
            return result;
        } catch (Exception e) {
            throw new MessagingException("Can not load matcher " + config.getMatcherName(), e);
        }
    }

    @Inject public  GuiceMatcherLoader(GuiceGenericLoader genericLoader);

}