class CilNewArrInstruction extends AbstractCilnstruction {
  public CilNewArrInstruction(ProtoIlInstructions.IlInstructionMsg instruction, DotnetBody dotnetBody, CilBlock cilBlock) {
    super(instruction, dotnetBody, cilBlock);
  }

  @Override
  public void jimplify(Body jb) {
    throw new NoStatementInstructionException(instruction);
  }

  @Override
  public Value jimplifyExpr(Body jb) {<FILL_FUNCTION_BODY>}
}

    Type type = DotnetTypeFactory.toSootType(instruction.getType().getFullname());

    List<Value> sizesOfArr = new ArrayList<>();
    for (ProtoIlInstructions.IlInstructionMsg index : instruction.getIndicesList()) {
      CilInstruction cilExpr = CilInstructionFactory.fromInstructionMsg(index, dotnetBody, cilBlock);
      Value value = cilExpr.jimplifyExpr(jb);
      Value val = value instanceof Immediate ? value : DotnetBodyVariableManager.inlineLocals(value, jb);
      sizesOfArr.add(val);
    }

    // if only one dim array
    if (sizesOfArr.size() == 1) {
      return Jimple.v().newNewArrayExpr(type, sizesOfArr.get(0));
    }

    ArrayType arrayType = ArrayType.v(type, sizesOfArr.size());
    return Jimple.v().newNewMultiArrayExpr(arrayType, sizesOfArr);
  
<methods>public void <init>(ProtoIlInstructions.IlInstructionMsg, soot.dotnet.members.method.DotnetBody, soot.dotnet.instructions.CilBlock) <variables>protected final non-sealed soot.dotnet.instructions.CilBlock cilBlock,protected final non-sealed soot.dotnet.members.method.DotnetBody dotnetBody,protected final non-sealed ProtoIlInstructions.IlInstructionMsg instruction