40 columns                              |
>>> arithmetic operators
var a=1+2/(3*-b~/4);
<<<
var a = 1 + 2 / (3 * -b ~/ 4);
>>> conditional operator
var c=!condition==a>b;
<<<
var c = !condition == a > b;
>>>
var d=condition?b:obj.foo(a, b);
<<<
var d = condition ? b : obj.foo(a, b);
>>> as
identifier     as    TypeName;
<<<
identifier as TypeName;
>>> is
identifier     is    TypeName;
<<<
identifier is TypeName;
>>> is!
var d=obj is!SomeType;
<<<
var d = obj is! SomeType;
>>> generic list literal
< int  >[1,2,(3+4)];
<<<
<int>[1, 2, (3 + 4)];
>>>
x &&
    y;
<<<
x && y;
>>> empty map literal (dartbug.com/16382)
var m = { };
<<<
var m = {};
>>>
var m = {};
<<<
var m = {};
>>> generic map literal
<   int,int  >{   };
<<<
<int, int>{};
>>> unqualified symbol
var x = #foo;
<<<
var x = #foo;
>>> qualified symbol
var y=#foo.bar.baz;
<<<
var y = #foo.bar.baz;
>>> long string literal
throw new FormatException("This is a long exception message.");
<<<
throw new FormatException(
    "This is a long exception message.");
>>>
assert(false);
<<<
assert(false);
>>> DON'T indent lines that are continued with a function expression.
new Future(new Duration(1), () {
      print('I am a callback');
    });
<<<
new Future(new Duration(1), () {
  print('I am a callback');
});
>>> DO use a space after : in named arguments.
new ListBox(showScrollbars :true);
<<<
new ListBox(showScrollbars: true);
>>> multiple prefix operators
-  ~  !  foo;
<<<
-~!foo;
>>> sequential "-" operators are not joined
-  -  -  -foo;
<<<
- - - -foo;
>>> a "-" operator before a negative integer is not joined
-  -1;
<<<
- -1;
>>> a "-" operator before a negative floating point number is not joined
-  -1.2;
<<<
- -1.2;
>>> multiline string inside nested blocks
main() {
  inner() {
    function("""
string""");
  }
}
<<<
main() {
  inner() {
    function("""
string""");
  }
}
>>> null coalescing operator
argument??    argument;
<<<
argument ?? argument;
>>> ?. operator
receiver ?.  method() ?. getter;
<<<
receiver?.method()?.getter;
>>> null coalescing self assignment
variableName??=argument;
<<<
variableName ??= argument;
>>> trailing comma in single argument list
function(argument   ,   );
<<<
function(
  argument,
);
>>> trailing comma in argument list
function(argument,argument  ,  );
<<<
function(
  argument,
  argument,
);
>>> trailing comma in named argument list
function(named: arg,another:arg,  );
<<<
function(
  named: arg,
  another: arg,
);
>>> generic method call
method   <int,String   ,    bool>  ();
<<<
method<int, String, bool>();