public Class<?> build() {
    	LogFactory.LOG_FACTORY_LOCAL.remove();
        if(StringUtils.isNotBlank(logFilePath)) {
        	LogFactory.LOG_FACTORY_LOCAL.set(new LogFactory(logFilePath)); 
        } else if(printLog) {
        	LogFactory.LOG_FACTORY_LOCAL.set(new LogFactory()); 
        }
        InterfaceResolver ici = new InterfaceResolver(javaVersion,
        		StringUtils.isBlank(packageName) ? name : packageName + "." + name, interfaces, getClassLoader());

        for(DummyField dummy : fieldDummies) {
            if(dummy.getType() == null) {
                throw new ASMSupportException("Not specify field type for field '" +  dummy.getName() + "'");
            }
            if(dummy.getName() == null) {
                throw new ASMSupportException("Not specify field name.");
            }
            ici.createField(dummy.getName(), dummy.getType(), dummy.getValue());
        }
        
        for(DummyInterfaceMethod dummy : methodDummies) {
            ici.declareMethod(dummy.getName(), dummy.getArgTypes(), dummy.getReturnType(), dummy.getThrows(), dummy.isVarargs());
        }
        
        if(staticBlock != null) {
            ici.createStaticBlock(staticBlock.getDelegate());
        }
        
        ici.setClassOutputPath(classOutPutPath);
        return ici.resolve();
    }