this.classAnalysisEngineMap = new HashMap<Class<?>, IClassAnalysisEngine>(); this.methodAnalysisEngineMap = new HashMap<Class<?>, IMethodAnalysisEngine>(); this.databaseFactoryMap = new HashMap<Class<?>, IDatabaseFactory<?>>();
this.classAnalysisEngineMap = new MapCache<Class<?>, IClassAnalysisEngine>(CACHE_SIZE); this.methodAnalysisEngineMap = new MapCache<Class<?>, IMethodAnalysisEngine>(CACHE_SIZE); this.databaseFactoryMap = new MapCache<Class<?>, IDatabaseFactory<?>>(CACHE_SIZE);
	AnalysisCache(IClassPath classPath) {		this.classPath = classPath;		this.classAnalysisEngineMap = new HashMap<Class<?>, IClassAnalysisEngine>();		this.methodAnalysisEngineMap = new HashMap<Class<?>, IMethodAnalysisEngine>();		this.databaseFactoryMap = new HashMap<Class<?>, IDatabaseFactory<?>>();				this.classAnalysisMap = new LinkedHashMap<ClassDescriptor, Map<Class<?>,Object>>() {			/* (non-Javadoc)			 * @see java.util.LinkedHashMap#removeEldestEntry(java.util.Map.Entry)			 */			@Override			protected boolean removeEldestEntry(Entry<ClassDescriptor, Map<Class<?>, Object>> eldest) {				return size() > CACHE_SIZE;			}		};				this.methodAnalysisMap = new LinkedHashMap<MethodDescriptor, Map<Class<?>,Object>>() {			/* (non-Javadoc)			 * @see java.util.LinkedHashMap#removeEldestEntry(java.util.Map.Entry)			 */			@Override			protected boolean removeEldestEntry(Entry<MethodDescriptor, Map<Class<?>, Object>> eldest) {				// XXX: temporary workaround				return true;			}		};				this.databaseMap = new HashMap<Class<?>, Object>();	}