40 columns                              |
>>> split type parameters (skip: published version of analyzer doesn't support function types yet)
typedef G = T Function<TypeOne, TypeTwo, TypeThree>();
<<<
typedef G = T Function<TypeOne, TypeTwo,
    TypeThree>();
>>> split all type parameters (skip: published version of analyzer doesn't support function types yet)
typedef G = T Function<TypeOne, TypeTwo, TypeThree, TypeFour, TypeFive, TypeSix>();
<<<
typedef G = T Function<
    TypeOne,
    TypeTwo,
    TypeThree,
    TypeFour,
    TypeFive,
    TypeSix>();
>>> split type and value parameters (skip: published version of analyzer doesn't support function types yet)
typedef G = T Function<TypeOne, TypeTwo, TypeThree>(TypeOne one, TypeTwo two, TypeThree three);
<<<
typedef G = T Function<TypeOne, TypeTwo,
        TypeThree>(TypeOne one,
    TypeTwo two, TypeThree three);
>>> generic typedef parameters on one line (skip: published version of analyzer doesn't support function types yet)
typedef Foo<T, S> = Function();
<<<
typedef Foo<T, S> = Function();
>>> generic typedef parameters that split (skip: published version of analyzer doesn't support function types yet)
typedef LongfunctionType<First, Second, Third, Fourth, Fifth, Sixth> = Function(First first, Second second, Third third, Fourth fourth);
<<<
typedef LongfunctionType<First, Second,
        Third, Fourth, Fifth, Sixth>
    = Function(
        First first,
        Second second,
        Third third,
        Fourth fourth);
>>> both type parameter lists split (skip: published version of analyzer doesn't support function types yet)
typedef LongfunctionType<First, Second, Third, Fourth, Fifth, Sixth> = Function<Seventh>(First first, Second second, Third third, Fourth fourth);
<<<
typedef LongfunctionType<First, Second,
        Third, Fourth, Fifth, Sixth>
    = Function<Seventh>(
        First first,
        Second second,
        Third third,
        Fourth fourth);
>>> all three parameter lists split (skip: published version of analyzer doesn't support function types yet)
typedef LongfunctionType<First, Second, Third, Fourth, Fifth, Sixth> = Function<Seventh, Eighth, Ninth, Tenth, Eleventh, Twelfth, Thirteenth>(First first, Second second, Third third, Fourth fourth);
<<<
typedef LongfunctionType<First, Second,
        Third, Fourth, Fifth, Sixth>
    = Function<
            Seventh,
            Eighth,
            Ninth,
            Tenth,
            Eleventh,
            Twelfth,
            Thirteenth>(
        First first,
        Second second,
        Third third,
        Fourth fourth);