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>sentence=self.sentence,<EOL>char_start=char_start,<EOL>char_end=char_end,<EOL>expander_key=self.expander_key,<EOL>position=self.position,<EOL>text=text,<EOL>words=self.words,<EOL>lemmas=self.lemmas,<EOL>pos_tags=self.pos_tags,<EOL>ner_tags=self.ner_tags,<EOL>dep_parents=self.dep_parents,<EOL>dep_labels=self.dep_labels,<EOL>page=self.page,<EOL>top=self.top,<EOL>left=self.left,<EOL>bottom=self.bottom,<EOL>right=self.right,<EOL>meta=self.meta,<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)