40 columns                              |
>>> all fit on one line
method<A,B,C,D>();
<<<
method<A, B, C, D>();
>>> prefer to split between args even when they all fit on next line
lengthyMethodName<First, Second, Third>();
<<<
lengthyMethodName<First, Second,
    Third>();
>>> split before first if needed
lengthyMethodName<FirstTypeArgumentIsLong, Second>();
<<<
lengthyMethodName<
    FirstTypeArgumentIsLong, Second>();
>>> split in middle if fit in two lines
lengthyMethodName<First, Second, Third, Fourth, Fifth, Sixth, Seventh>();
<<<
lengthyMethodName<First, Second, Third,
    Fourth, Fifth, Sixth, Seventh>();
>>> split one per line if they don't fit in two lines
lengthyMethodName<First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth>();
<<<
lengthyMethodName<
    First,
    Second,
    Third,
    Fourth,
    Fifth,
    Sixth,
    Seventh,
    Eighth>();
>>> prefers to not split at type arguments
lengthyMethodName<
    TypeArgument>(valueArgument);
<<<
lengthyMethodName<TypeArgument>(
    valueArgument);
>>> split both type and value arguments
lengthyMethodName<First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth>(first, second, third, fourth, fifth, sixth, seventh, eighth);
<<<
lengthyMethodName<
        First,
        Second,
        Third,
        Fourth,
        Fifth,
        Sixth,
        Seventh,
        Eighth>(
    first,
    second,
    third,
    fourth,
    fifth,
    sixth,
    seventh,
    eighth);
>>> in method chain
receiver.method<First, Second, Third, Fourth, Fifth>
    (first, second, third, fourth, fifth)
.method<First, Second, Third, Fourth, Fifth>
    (first, second, third, fourth, fifth);
<<<
receiver
    .method<First, Second, Third,
            Fourth, Fifth>(first,
        second, third, fourth, fifth)
    .method<First, Second, Third,
            Fourth, Fifth>(first,
        second, third, fourth, fifth);