                      ptr += ptr.head
  
                  elif ptr + ptr.head == self.c:
                      yield self.doc[ptr - (self.c - self.i)]
                      ptr += 1
                  else:
                      ptr += 1
                  nr_iter += 1
                  # This is ugly, but it's a way to guard out infinite loops
                  if nr_iter >= 10000000:
                      raise RuntimeError(
                          "Possibly infinite loop encountered while looking for token.lefts")
 
</s> remove                     ptr -= 1
                else:
                    ptr -= 1
 </s> add                 ptr -= 1
                nr_iter += 1 </s> remove                 # If this head is still to the right of us, we can skip to it
                # No token that's between this token and this head could be our
                # child.
                if (ptr.head >= 1) and (ptr + ptr.head) < self.c:
                    ptr += ptr.head

                elif ptr + ptr.head == self.c:
 </s> add                 if ptr + ptr.head == self.c: </s> remove                 # If this head is still to the right of us, we can skip to it
                # No token that's between this token and this head could be our
                # child.
                if (ptr.head < 0) and ((ptr + ptr.head) > self.c):
                    ptr += ptr.head
                elif ptr + ptr.head == self.c:
 </s> add                 if ptr + ptr.head == self.c: </s> remove     def _lift(self, tokenid, heads):
 </s> add     @classmethod
    def _lift(cls, tokenid, heads): </s> remove         smallest_np_arc = self._get_smallest_nonproj_arc(proj_heads)
 </s> add         smallest_np_arc = cls._get_smallest_nonproj_arc(proj_heads)
                ptr += 1
                      ptr += ptr.head
  
                  elif ptr + ptr.head == self.c:
                      yield self.doc[ptr - (self.c - self.i)]
                ptr += 1
                ptr += 1
                ptr += 1
                  nr_iter += 1
                  # This is ugly, but it's a way to guard out infinite loops
                  if nr_iter >= 10000000:
                      raise RuntimeError(
                          "Possibly infinite loop encountered while looking for token.lefts")
keep keep keep keep replace replace replace keep keep keep keep keep
 integrated pseudo-projective parsing into parser

- nonproj.pyx holds a class PseudoProjectivity which currently holds
  all functionality to implement Nivre & Nilsson 2005's pseudo-projective
  parsing using the HEAD decoration scheme
- changed lefts/rights in Token to account for possible non-projective
  structures 
spacy/tokens/token.pyx