@Override
  public TextBuffer toJava(int indent, BytecodeMappingTracer tracer) {
    TextBuffer res = array.toJava(indent, tracer);

    if (array.getPrecedence() > getPrecedence()) { // array precedence equals 0
      res.enclose("(", ")");
    }

    VarType arrType = array.getExprType();
    if (arrType.getArrayDim() == 0) {
      VarType objArr = VarType.VARTYPE_OBJECT.resizeArrayDim(1); // type family does not change
      res.enclose("((" + ExprProcessor.getCastTypeName(objArr, Collections.emptyList()) + ")", ")");
    }

    tracer.addMapping(bytecode);

    return res.append('[').append(index.toJava(indent, tracer)).append(']');
  }
@Override
  public TextBuffer toJava(int indent, BytecodeMappingTracer tracer)