if ((left.getType().isArrayType()) && ((right.getType().isArrayType() || right instanceof SIRPopExpression) && !(right instanceof JNewArrayExpression))) {
boolean arrayType = ((left.getType()!=null && left.getType().isArrayType()) || (right.getType()!=null && right.getType().isArrayType())); if (arrayType && !(right instanceof JNewArrayExpression)) {
    public void visitAssignmentExpression(JAssignmentExpression self,                                          JExpression left,                                          JExpression right) {        //do not print class creation expression        if (passParentheses(right) instanceof JQualifiedInstanceCreation ||            passParentheses(right) instanceof JUnqualifiedInstanceCreation ||            passParentheses(right) instanceof JQualifiedAnonymousCreation ||            passParentheses(right) instanceof JUnqualifiedAnonymousCreation)            return;        //print the correct code for array assignment        //this must be run after renaming!!!!!!        if (left.getType() == null || right.getType() == null) {            boolean oldStatementContext = statementContext;            lastLeft = left;            printLParen();      // parenthesize if expr not if stmt            statementContext = false;            left.accept(this);            p.print(" = ");            right.accept(this);            statementContext = oldStatementContext;            printRParen();            return;        }        if ((left.getType().isArrayType()) &&             ((right.getType().isArrayType() || right instanceof SIRPopExpression) &&              !(right instanceof JNewArrayExpression))) {            CArrayType type = (CArrayType)right.getType();	    String dims[] = Util.makeString(type.getDims());	    // dims should never be null now that we have static array	    // bounds	    assert dims != null;	    /*            //if we cannot find the dim, just create a pointer copy            if (dims == null) {                boolean oldStatementContext = statementContext;                lastLeft=left;                printLParen();  // parenthesize if expr not if stmt                statementContext = false;                left.accept(this);                p.print(" = ");                right.accept(this);                statementContext = oldStatementContext;                printRParen();                return;            }	    */            p.print("{\n");            p.print("int ");            //print the index var decls            for (int i = 0; i < dims.length -1; i++)                p.print(RawExecutionCode.ARRAY_COPY + i + ", ");            p.print(RawExecutionCode.ARRAY_COPY + (dims.length - 1));            p.print(";\n");            for (int i = 0; i < dims.length; i++) {                p.print("for (" + RawExecutionCode.ARRAY_COPY + i + " = 0; " + RawExecutionCode.ARRAY_COPY + i +                        " < " + dims[i] + "; " + RawExecutionCode.ARRAY_COPY + i + "++)\n");            }            left.accept(this);            for (int i = 0; i < dims.length; i++)                p.print("[" + RawExecutionCode.ARRAY_COPY + i + "]");            p.print(" = ");            right.accept(this);            for (int i = 0; i < dims.length; i++)                p.print("[" + RawExecutionCode.ARRAY_COPY + i + "]");            p.print(";\n}\n");            return;        }        boolean oldStatementContext = statementContext;        lastLeft = left;        printLParen();  // parenthesize if expr not if stmt        statementContext = false;        left.accept(this);        p.print(" = ");        right.accept(this);        statementContext = oldStatementContext;        printRParen();    }