          while it != suffixes.rend():
              idx = tokens.push_back(idx, deref(it))
              preinc(it)
  
      cdef int _save_cached(self, const Lexeme* const* tokens, hash_t key, int n) except -1:
          cdef int i
          for i in range(n):
              if tokens[i].id == 1:
                  return 0
          lexemes = <const Lexeme**>self.mem.alloc(n + 1, sizeof(Lexeme**))
 
</s> remove             if tokens[i].id == 1:
 </s> add             if tokens[i].lex.id == 1: </s> remove             lexemes[i] = tokens[i]
 </s> add             lexemes[i] = tokens[i].lex </s> remove         self.lex[self.length] = lexeme
        self.idx[self.length] = idx
        self.pos[self.length] = 0
        self.ner[self.length] = 0
 </s> add         cdef TokenC* t = &self.data[self.length]
        t.lex = lexeme
        t.idx = idx
        t.pos = 0
        t.sense = 0 </s> remove     cdef int _save_cached(self, const Lexeme* const* tokens, hash_t key, int n) except -1
 </s> add     cdef int _save_cached(self, const TokenC* tokens, hash_t key, int n) except -1 </s> remove     cdef const Lexeme** _lex_ptr
    cdef int* _idx_ptr
    cdef int* _pos_ptr
    cdef int* _ner_ptr
    cdef const Lexeme** lex
    cdef int* idx
    cdef int* pos
    cdef int* ner
 </s> add     cdef TokenC* _data
    cdef TokenC* data
    cdef int _save_cached(self, const TokenC* tokens, hash_t key, int n) except -1:
          while it != suffixes.rend():
              idx = tokens.push_back(idx, deref(it))
              preinc(it)
  
    cdef int _save_cached(self, const TokenC* tokens, hash_t key, int n) except -1:
          cdef int i
          for i in range(n):
              if tokens[i].id == 1:
                  return 0
          lexemes = <const Lexeme**>self.mem.alloc(n + 1, sizeof(Lexeme**))
keep keep keep keep replace keep keep keep keep keep
 * Introduce a TokenC struct, to handle token indices, pos tags and sense tags 
spacy/lang.pyx