safe.put(((JLocalVariableExpression)prefix).getVariable(),Boolean.TRUE);
unsafe.put(((JLocalVariableExpression)prefix).getVariable(),Boolean.TRUE);
    public Object visitMethodDeclaration(JMethodDeclaration self,					 int modifiers,					 CType returnType,					 String ident,					 JFormalParameter[] parameters,					 CClassType[] exceptions,					 JBlock body) {	for (int i = 0; i < parameters.length; i++) {	    if (!parameters[i].isGenerated()) {		parameters[i].accept(this);	    }	}	if (body != null) {	    final Hashtable targets=new Hashtable();	    final Hashtable safe=new Hashtable();	    body.accept(new SLIRReplacingVisitor() {		    /**		     * If arrays used in any way except in array access then remove from targets		     */		    public Object visitLocalVariableExpression(JLocalVariableExpression self2,							       String ident2) {			targets.remove(((JLocalVariableExpression)self2).getVariable());			safe.put(((JLocalVariableExpression)self2).getVariable(),Boolean.TRUE);			return self2;		    }		    /**		     * Considers target		     */		    public Object visitArrayAccessExpression(JArrayAccessExpression self2,							     JExpression prefix,							     JExpression accessor) {			prefix.accept(this);			accessor.accept(this);			if((prefix instanceof JLocalVariableExpression)&&(!safe.containsKey(((JLocalVariableExpression)prefix).getVariable())))			    if(accessor instanceof JIntLiteral) {				targets.put(((JLocalVariableExpression)prefix).getVariable(),Boolean.TRUE);			    } else {				targets.remove(((JLocalVariableExpression)prefix).getVariable());				safe.put(((JLocalVariableExpression)prefix).getVariable(),Boolean.TRUE);			    }			return self2;		    }		});	    this.targets=targets;	    body.accept(this);	}	return self;    }