private DefaultConstructorFactory getDefaultConstructorFactory() {

        lock.lock();
        try {
            DefaultConstructorFactory factory = null;
            try {
                factory = new SunDefaultConstructorFactory();
            } catch (Exception e) {
                // fall down...
            }
            if (factory == null)
                factory = new NoDefaultConstructorFactory();
            return factory;
        } finally {
            lock.unlock();
        }
    }