40 columns                              |
>>> prefers to wrap at => before params
class Foo {
  Stream methodName(AssetId id) => methodBodyHereItIs;
}
<<<
class Foo {
  Stream methodName(AssetId id) =>
      methodBodyHereItIs;
}
>>> can split on getter
class Foo {
  VeryLongTypeAnnotation get veryLongGetter => null;
}
<<<
class Foo {
  VeryLongTypeAnnotation
      get veryLongGetter => null;
}
>>> can split on setter
class Foo {
  VeryLongTypeAnnotation set veryLongSetter(v) {}
}
<<<
class Foo {
  VeryLongTypeAnnotation
      set veryLongSetter(v) {}
}
>>> do not split after "covariant" in field
class Foo {
  covariant var soMuchSoVeryLongFieldNameHere;
  covariant VeryLongTypeAnnotation field;
}
<<<
class Foo {
  covariant var soMuchSoVeryLongFieldNameHere;
  covariant VeryLongTypeAnnotation
      field;
}
>>> do not split after "external" in field
class Foo {
  external var soMuchSoVeryLongFieldNameHere;
  external SuperLongTypeAnnotation field;
}
<<<
class Foo {
  external var soMuchSoVeryLongFieldNameHere;
  external SuperLongTypeAnnotation
      field;
}
>>> do not split after "abstract" in field
class Foo {
  abstract var soMuchSoVeryLongFieldNameHere;
  abstract SuperLongTypeAnnotation field;
}
<<<
class Foo {
  abstract var soMuchSoVeryLongFieldNameHere;
  abstract SuperLongTypeAnnotation
      field;
}