anchor.diff:                  )
                 ),
                 new RenderTable(
  -                columns: 3,
  +                border: new TableBorder.symmetric(inside: new BorderSide(width: 1.0)),
                   columnWidths: const <int, ColumnWidth>{
                     0: const IntrinsicColumnWidth(),
                     1: const MaxColumnWidth(const IntrinsicColumnWidth(), const FractionColumnWidth(0.4)),
  
positive.code:   }
  }
  
  class RenderTable extends RenderBox {
    RenderTable({
      int columns: 0,
      int rows,
      Map<int, ColumnWidth> columnWidths,
      ColumnWidth defaultColumnWidth: const FlexColumnWidth(1.0),
      List<List<RenderBox>> children
    }) {
      assert(columns != null);
      assert(columns >= 0);
      assert(rows == null || rows >= 0);
      assert(rows == null || children == null);
      assert(defaultColumnWidth != null);
      _columns = columns;
      _rows = rows ?? 0;
      _children = new List<RenderBox>()..length = _columns * _rows;
      _columnWidths = columnWidths ?? new HashMap<int, ColumnWidth>();
      _defaultColumnWidth = defaultColumnWidth;
      for (List<RenderBox> row in children)
        addRow(row);
    }
  
    // TODO(ianh): Add a 'borders' field on the table, to paint the borders.
    // use a Border subclass with "insideVertical" and "insideHorizontal" fields?
  
    // TODO(ianh): Add a 'decoration' field to the children's parent data, to paint on each cell.
  
    // TODO(ianh): Add a 'verticalAlignment' field to the children's parent data, to align the cells.
    // Values would be baseline, top, bottom, middle.
  
    // Children are stored in row-major order.
    // _children.length must be rows * columns
  
negative.code:   RenderImage imageRenderer;
  
    bool checked = false;
    RenderOpacity checkRenderer;
  }
  
  final List<Train> kTrainData = <Train>[
  