@Override
  public boolean visit(Assignment node) {
    Expression lhs = node.getLeftHandSide();
    TypeMirror lhsType = lhs.getTypeMirror();
    if (lhs instanceof ArrayAccess && !lhsType.getKind().isPrimitive()) {
      FunctionInvocation newAssignment = newArrayAssignment(node, (ArrayAccess) lhs, lhsType);
      node.replaceWith(newAssignment);
      newAssignment.accept(this);
      return false;
    }
    return true;
  }
@ Override public boolean visit ( Assignment node ) { Expression lhs = node . getLeftHandSide ( ) ; TypeMirror lhsType = lhs . getTypeMirror ( ) ; if ( lhs instanceof ArrayAccess && ! lhsType . getKind ( ) . isPrimitive ( ) ) { FunctionInvocation newAssignment = newArrayAssignment ( node , ( ArrayAccess ) lhs , lhsType ) ; node . replaceWith ( newAssignment ) ; newAssignment . accept ( this ) ; return false ; } return true ; }
rhs is an array creation, we can optimize with "SetAndConsume".