>>>
void main() {
  model..account = (new Account()
    ..accountId = new Int64(111)
    ..tags = (new Account_Tags()..accountHotlist.add(new Hotlist()..hotlistId = new Int64(10))));
}
<<<
void main() {
  model
    ..account = (new Account()
      ..accountId = new Int64(111)
      ..tags = (new Account_Tags()
        ..accountHotlist.add(new Hotlist()..hotlistId = new Int64(10))));
}
>>> (indent 4)
main() {
receiver
      ..formattedTotal = _total == 0
          ? ""
          : _chartType == "PieChart"
              ? _formatter.formatAsPercent(item.value / _total, fractionDigits: 1)
              : _formatter.formatValue(item.value, item.valueType);
}
<<<
    main() {
      receiver
        ..formattedTotal = _total == 0
            ? ""
            : _chartType == "PieChart"
                ? _formatter.formatAsPercent(item.value / _total,
                    fractionDigits: 1)
                : _formatter.formatValue(item.value, item.valueType);
    }