class ClassVerifier {

    private void verifyClass(final String packageName,
                             final String className) {

        try {
            final Class clazz = kieModuleMetaData.getClass(packageName,
                                                           className);
            if (clazz != null) {
                if (TypeSource.JAVA_DEPENDENCY == typeSourceResolver.getTypeSource(clazz)) {
                    verifyExternalClass(clazz);
                }
            } else {
                logger.warn(MessageFormat.format(ERROR_EXTERNAL_CLASS_VERIFICATION,
                                                 toFQCN(packageName, className)));
            }
        } catch (Throwable e) {
            final String msg = MessageFormat.format(ERROR_EXTERNAL_CLASS_VERIFICATION,
                                                    toFQCN(packageName, className),
                                                    e.getMessage());

            logger.warn(msg);
            logger.debug("This state is usually encountered when the Project references a class not on the classpath; e.g. in a Maven 'provided' scope or 'optional' dependency.", e);
            buildMessages.add(makeWarningMessage(msg));
        }
    }

    public  ClassVerifier(final KieModuleMetaData kieModuleMetaData,
                         final TypeSourceResolver typeSourceResolver);

}