 split on spaces (i.e. each new substring should
    start with a space). Note that the string will NOT be split on a space
    which is escaped with a backslash.

    If the string is an f-string, it will NOT be split in the middle of an
    f-expression (e.g. in f"FooBar: {foo() if x else bar()}", {foo() if x
    else bar()} is an f-expression).

    If the string that is being split has an associated set of custom split
    records and those custom splits will NOT result in any line going over
    the configured line length, those custom splits are used. Otherwise the
    string is split as late as possible (from left-to-right) while still
    adhering to the transformation rules listed above.

Collaborations:
    StringSplitter relies on StringMerger to construct the appropriate
    CustomSplit objects and add them to the custom split map.
