boolean (Exprent first, Exprent second) { if (first.type == Exprent.EXPRENT_ASSIGNMENT) { AssignmentExprent as = (AssignmentExprent)first; if (as.getRight().type == Exprent.EXPRENT_NEW && as.getLeft().type == Exprent.EXPRENT_VAR) { NewExprent newExpr = (NewExprent)as.getRight(); if (!newExpr.getLstArrayElements().isEmpty()) { VarExprent arrVar = (VarExprent)as.getLeft(); if (second.type == Exprent.EXPRENT_ASSIGNMENT) { AssignmentExprent aas = (AssignmentExprent)second; if (aas.getLeft().type == Exprent.EXPRENT_ARRAY) { ArrayExprent arrExpr = (ArrayExprent)aas.getLeft(); if (arrExpr.getArray().type == Exprent.EXPRENT_VAR && arrVar.equals(arrExpr.getArray()) && arrExpr.getIndex().type == Exprent.EXPRENT_CONST) { int constValue = ((ConstExprent)arrExpr.getIndex()).getIntValue(); if (constValue < newExpr.getLstArrayElements().size()) { Exprent init = newExpr.getLstArrayElements().get(constValue); if (init.type == Exprent.EXPRENT_CONST) { ConstExprent cinit = (ConstExprent)init; VarType arrType = newExpr.getNewType().decreaseArrayDim(); ConstExprent defaultVal = ExprProcessor.getDefaultArrayValue(arrType); if (cinit.equals(defaultVal)) { Exprent tempExpr = aas.getRight(); if (!tempExpr.containsExprent(arrVar)) { newExpr.getLstArrayElements().set(constValue, tempExpr); if (tempExpr.type == Exprent.EXPRENT_NEW) { NewExprent tempNewExpr = (NewExprent)tempExpr; int dims = newExpr.getNewType().getArrayDim(); if (dims > 1 && !tempNewExpr.getLstArrayElements().isEmpty()) { tempNewExpr.setDirectArrayInit(true); } } return true; } } } } } } } } } } return false; }