def _do_chunk(self, type, role=None, relation=None, iob=None):
if (type is None or type == OUTSIDE) and(role is None or role == OUTSIDE) and (relation is None or relation == OUTSIDE):<EOL><INDENT>return<EOL><DEDENT>if iob != BEGINand self.chunksand self.chunks[-<NUM_LIT:1>].type == typeand self._relation == (relation, role)and self.words[-<NUM_LIT:2>].chunk is not None: <EOL><INDENT>self.chunks[-<NUM_LIT:1>].append(self.words[-<NUM_LIT:1>])<EOL><DEDENT>else:<EOL><INDENT>ch = Chunk(self, [self.words[-<NUM_LIT:1>]], type, role, relation)<EOL>self.chunks.append(ch)<EOL>self._relation = (relation, role)<EOL><DEDENT>
Adds a new Chunk to the sentence, or adds the last word to the previous chunk.
            The word is attached to the previous chunk if both type and relation match,
            and if the word's chunk tag does not start with "B-" (i.e., iob != BEGIN).
            Punctuation marks (or other "O" chunk tags) are not chunked.