'Launch this snippet, overwriting the text \'start\' to \'end\' and
keeping the \'text_before\' on the launch line.
\'Parent\' is the parent snippet instance if any.'

def launch(self, text_before, visual_content, parent, start, end):

    indent = self._INDENT.match(text_before).group(0)
    lines = (self._value + '\n').splitlines()
    ind_util = IndentUtil()
    initial_text = []
    for (line_num, line) in enumerate(lines):
        if ('t' in self._opts):
            tabs = 0
        else:
            tabs = len(self._TABS.match(line).group(0))
        line_ind = ind_util.ntabs_to_proper_indent(tabs)
        if (line_num != 0):
            line_ind = (indent + line_ind)
        result_line = (line_ind + line[tabs:])
        if ('m' in self._opts):
            result_line = result_line.rstrip()
        initial_text.append(result_line)
    initial_text = '\n'.join(initial_text)
    snippet_instance = SnippetInstance(self, parent, initial_text, start, end, visual_content, last_re=self._last_re, globals=self._globals, context=self._context)
    self.instantiate(snippet_instance, initial_text, indent)
    snippet_instance.update_textobjects()
    return snippet_instance
