@SuppressWarnings("unchecked")
    public <T extends AssetProcessor> T getProcessor(Class<T> procClass) {
        if (procClass == null)
            return null;

        T proc = (T) classToProcMap.get(procClass);
        if (proc == null) {
            synchronized (classToProcMap) {
                proc = (T) classToProcMap.get(procClass);
                if (proc == null) {
                    try {
                        proc = procClass.getDeclaredConstructor().newInstance();
                        classToProcMap.put(procClass, proc);
                    } catch (InstantiationException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException ex) {
                        throw new IllegalArgumentException("The processor class cannot"
                                + " be created, ensure it has empty constructor", ex);
                    } catch (IllegalAccessException | SecurityException ex) {
                        throw new IllegalArgumentException("The processor class cannot "
                                + "be accessed", ex);
                    }
                }
            }
        }
        return proc;
    }
Returns the AssetLoader registered for the given extension
of the current thread.
@return AssetLoader registered with addLoader.
jme3-core/src/main/java/com/jme3/asset/ImplHandler.java