  
      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**))
          for i in range(n):
              lexemes[i] = tokens[i]
          lexemes[i + 1] = NULL
 
</s> remove             lexemes[i] = tokens[i]
 </s> add             lexemes[i] = tokens[i].lex </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         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                 output[i, j] = get_attr(self.lex[i], feature)
 </s> add                 output[i, j] = get_attr(self.data[i].lex, feature)
            if tokens[i].lex.id == 1:
  
      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].lex.id == 1:
                  return 0
          lexemes = <const Lexeme**>self.mem.alloc(n + 1, sizeof(Lexeme**))
          for i in range(n):
              lexemes[i] = tokens[i]
          lexemes[i + 1] = NULL
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