def split(self, delimiter=None):
result = []<EOL>strings = self.strings[:]<EOL>current = None<EOL>while strings:<EOL><INDENT>is_literal, value = strings[<NUM_LIT:0>]<EOL>parts = value.split(delimiter, <NUM_LIT:1>)<EOL>if len(parts) > <NUM_LIT:1>:<EOL><INDENT>value1, value2 = parts<EOL>strings[<NUM_LIT:0>] = (is_literal, value2)<EOL>out = EscapedString(value1, is_literal)<EOL>push = True<EOL><DEDENT>else:<EOL><INDENT>strings = strings[<NUM_LIT:1>:]<EOL>out = EscapedString(value, is_literal)<EOL>push = False<EOL><DEDENT>if current is None:<EOL><INDENT>current = out<EOL><DEDENT>else:<EOL><INDENT>current = current + out<EOL><DEDENT>if push:<EOL><INDENT>result.append(current)<EOL>current = None<EOL><DEDENT><DEDENT>if current:<EOL><INDENT>result.append(current)<EOL><DEDENT>return result<EOL>
Same as string.split(), but retains literal/expandable structure.

        Returns:
            List of `EscapedString`.