40 columns                              |
>>> multiple lines
enum Primate{BONOBO,CHIMP,GORILLA,ORANGUTAN}
<<<
enum Primate {
  BONOBO,
  CHIMP,
  GORILLA,
  ORANGUTAN
}
>>> multiple lines trailing comma
enum Primate{BONOBO,CHIMP,GORILLA,ORANGUTAN,}
<<<
enum Primate {
  BONOBO,
  CHIMP,
  GORILLA,
  ORANGUTAN,
}
>>> wrapped argument lists in values
enum Args {
firstEnumValue(longArgument,anotherArgument),
secondEnumValue(longArgument,anotherArgument,aThirdArgument,theLastOne),
thirdGenericOne<FirstTypeArgument,
SecondTypeArgument<NestedTypeArgument,AnotherNestedTypeArgument>,
LastTypeArgument>(namedArgument: firstValue,anotherNamed:argumentValue)
}
<<<
enum Args {
  firstEnumValue(
      longArgument, anotherArgument),
  secondEnumValue(
      longArgument,
      anotherArgument,
      aThirdArgument,
      theLastOne),
  thirdGenericOne<
          FirstTypeArgument,
          SecondTypeArgument<
              NestedTypeArgument,
              AnotherNestedTypeArgument>,
          LastTypeArgument>(
      namedArgument: firstValue,
      anotherNamed: argumentValue)
}