>>>
if (x &&
    y) {
  print('!');
}
<<<
if (x && y) {
  print('!');
}
>>>
for (var a=0; a<100; ++a) { print(a); }
<<<
for (var a = 0; a < 100; ++a) {
  print(a);
}
>>>
for(
var a=0;
a<100; 
++a)
{ 
print(a);
}
<<<
for (var a = 0; a < 100; ++a) {
  print(a);
}
>>>
for (x in xs) {
  print(x);
}
<<<
for (x in xs) {
  print(x);
}
>>>
List<int> numbers = <int>[a012345678901234567890123456789, b012345678901234567890123456789, c012345678901234567890123456789];
<<<
List<int> numbers = <int>[
    a012345678901234567890123456789,
    b012345678901234567890123456789,
    c012345678901234567890123456789];
>>>
blah() {
  print('blah blah blah blah blah blah blah blah blah blah blah blah blah blah $foo');
}
<<<<
blah() {
  print(
      'blah blah blah blah blah blah blah blah blah blah blah blah blah blah $foo');
}
>>>
assert(false);
<<<
assert(false);
>>> dartbug.com/16384
fish() => []..add(1)..add(2);
<<<
fish() => []
    ..add(1)
    ..add(2);
>>>
fish() => []..add(1);
<<<
fish() => []..add(1);
>>> dartbug.com/16382
var m = { };
<<<
var m = {};
>>>
var m = {};
<<<
var m = {};
>>> Indent cases two spaces and case bodies four spaces (dartbug.com/16406)
switches() {
  switch (fruit) {
    case 'apple':
    print('delish');
    break;

    case 'durian':
    print('stinky');
    break;
    default:
  print('nevermind');
  break;
  }
}
<<<
switches() {
  switch (fruit) {
    case 'apple':
      print('delish');
      break;

    case 'durian':
      print('stinky');
      break;
    default:
      print('nevermind');
      break;
  }
}
>>> dartbug.com/16383
main() {
  //foo
}
<<<
main() {
  //foo
}
>>> dartbug.com/16379
var x = new XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX();
<<<
var x =
    new XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX();
>>>
main() {
  throw new FormatException("This is a long exception message that puts this over 80 columns.");
}
<<<
main() {
  throw new FormatException(
      "This is a long exception message that puts this over 80 columns.");
}
>>> Empty method bodies may be on a single line (or more)
void main() { }
<<<
void main() {}
>>>
void main() {

}
<<<
void main() {

}
>>> Decls with initializers get their own lines (dartbug.com/16849)
var x, y;
<<<
var x, y;
>>>
var x = 3, y = 4;
<<<
var x = 3,
    y = 4;
>>>
var x = 2, y;
<<<
var x = 2,
    y;
>>> dartbug.com/16810 [Note: transforms are enabled]
void f() {
  var a;;;
}
<<<
void f() {
  var a;
}
>>>
while (true);
<<<
while (true);
>>>
for ( ; ; ) {
  print('!');
}
<<<
for ( ; ; ) {
  print('!');
}
>>>
main() {
  var zero = 0;
  if (0 == 0) {
    zero = 0;
  } else if (0 == 1) {
    zero = 1;
  } else if (0 == 2) {
    zero = 2;
  }
  print(0);
}
<<<
main() {
  var zero = 0;
  if (0 == 0) {
    zero = 0;
  } else if (0 == 1) {
    zero = 1;
  } else if (0 == 2) {
    zero = 2;
  }
  print(0);
}
>>>
main() {
  printNumbers(a, b) {}
  printNumbers(00000000000000000000000000000000000000000000000000000000000, 111);
}
<<<
main() {
  printNumbers(a, b) {}
  printNumbers(
      00000000000000000000000000000000000000000000000000000000000,
      111);
}
