@PossiblyNull protected MethodGen analyze(Method method) {
@CheckForNull protected MethodGen analyze(Method method) {
		        @PossiblyNull protected MethodGen analyze(Method method) {			        if (method.getCode() == null)				        return null;			        MethodGen result = cachedMethodGen.get(method);			        			         if (result != null) {			        	// System.out.println("got cached value " + System.identityHashCode(result));			        	return result;			        }			         String methodName = method.getName();					if (false) System.out.println("methodGen: " + jclass.getClassName() + "." 				        		+ methodName + " : " + method.getSignature() + " " + System.identityHashCode(method));				       					if (false && jclass.getClassName().indexOf("edu.umd.cs.findbugs.xml.XMLOutputUtil") >= 0) {						try {							throw new RuntimeException("get methodGen for XMLOutputUtil");						}catch (RuntimeException e) {							e.printStackTrace(System.out);						}					}					if (analysisContext.getBoolProperty(AnalysisFeatures.SKIP_HUGE_METHODS)) {						int codeLength = method.getCode().getLength();						if (codeLength > 3000 								|| (methodName.equals("<clinit>") || methodName.equals("getContents")) && codeLength > 1000) {							getLookupFailureCallback().reportSkippedAnalysis(new JavaClassAndMethod(jclass, method));							return null;						}					}										result = new MethodGen(method, jclass.getClassName(), getConstantPoolGen());					if (!analysisContext.getBoolProperty(AnalysisFeatures.CONSERVE_SPACE)) {						Runtime runtime = Runtime.getRuntime();						// TODO: Find a smarter way to do this.						if (cachedMethodGen.size() > 500 								&& runtime.freeMemory() < runtime.totalMemory()/5) cachedMethodGen.clear();						if (true) cachedMethodGen.put(method, result);					}					// System.out.println("Returning " + System.identityHashCode(result));					return result;		        }