def __getitem__(self, key):
if isinstance(key, slice):<EOL><INDENT>char_start = (<EOL>self.char_start if key.start is None else self.char_start + key.start<EOL>)<EOL>if key.stop is None:<EOL><INDENT>char_end = self.char_end<EOL><DEDENT>elif key.stop >= <NUM_LIT:0>:<EOL><INDENT>char_end = self.char_start + key.stop - <NUM_LIT:1><EOL><DEDENT>else:<EOL><INDENT>char_end = self.char_end + key.stop<EOL><DEDENT>return self._get_instance(<EOL>char_start=char_start, char_end=char_end, sentence=self.sentence<EOL>)<EOL><DEDENT>else:<EOL><INDENT>raise NotImplementedError()<EOL><DEDENT>
Slice operation returns a new candidate sliced according to **char index**

Note that the slicing is w.r.t. the candidate range (not the abs.
sentence char indexing).