class NativeLibraryLocator {

    public File find(JniLibrary jniLibrary) throws IOException {

        if (this.extractDir != null) {
            return extractToDirectory(jniLibrary, this.extractDir);
        }

        File libFile = extractToDefaultTempDirectory(jniLibrary);

        if (libFile != null) {
            return libFile;
        }

        File buildFile = getBuildDirectory(jniLibrary);
        logger.warn(
                "Having panic attack and resorting to depraved hackery by searching build directory for shared library file:");
        logger.warn(buildFile.getCanonicalPath());
        return loadFromDirectory(jniLibrary, buildFile);
    }

    public  NativeLibraryLocator(String extractDir);
    public  NativeLibraryLocator();

}