@Override
  public String generateCode() {
    if (constant != null)
      return constant.generateCode();
    else if (expression != null)
      return expression.generateCode();
    if (id != null) {
      List<Integer> dimensions = getVariable(id).getType().getDimensions();
      if (dimensions != null)
        lValue.setDimensions(dimensions);
      String code = lValue.generateCode();
      if (code != null) {
        String newTemp = newTemp();
        emit("array_load, " + newTemp + ", " + id + ", " + code);
        return newTemp;
      }
    }
    return id;
  }