} else { prefix.accept(this); accessor.accept(this); }
    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 HashMap targets=new HashMap();	    final HashMap unsafe=new HashMap();	    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());			unsafe.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)&&(!unsafe.containsKey(((JLocalVariableExpression)prefix).getVariable())))			    if(accessor instanceof JIntLiteral) {				HashMap map=(HashMap)targets.get(((JLocalVariableExpression)prefix).getVariable());				if(map==null) {				    map=new HashMap();				    targets.put(((JLocalVariableExpression)prefix).getVariable(),map);				}				map.put(new Integer(((JIntLiteral)accessor).intValue()),Boolean.TRUE);			    } else {				targets.remove(((JLocalVariableExpression)prefix).getVariable());				unsafe.put(((JLocalVariableExpression)prefix).getVariable(),Boolean.TRUE);			    }			return self2;		    }		});	    this.targets=targets;	    Set keySet=targets.keySet();	    JLocalVariable[] vars=new JLocalVariable[keySet.size()];	    keySet.toArray(vars);	    for(int i=0;i<vars.length;i++) {		JLocalVariable var=vars[i];		keySet=((HashMap)targets.get(var)).keySet();		Integer[] ints=new Integer[keySet.size()];		keySet.toArray(ints);		int top=0;		for(int j=0;j<ints.length;j++) {		    int newInt=ints[j].intValue();		    if(newInt>top)			top=newInt;		}		JLocalVariable[] newVars=new JLocalVariable[top+1];		for(int j=0;j<ints.length;j++) {		    int newInt=ints[j].intValue();		    JVariableDefinition varDef=toVar(var,newInt);		    body.addStatementFirst(new JVariableDeclarationStatement(null,varDef,null));		    newVars[newInt]=varDef;		}		replaced.put(var,newVars);	    }	    body.accept(this);	}	return self;    }