          # assumes heads to be a proper tree, i.e. connected and cycle-free
          # returns a new pair (heads,labels) which encode
          # a projective and decorated tree
          proj_heads = copy(heads)
          smallest_np_arc = self._get_smallest_nonproj_arc(proj_heads)
          if smallest_np_arc == None: # this sentence is already projective
              return proj_heads, copy(labels)
          while smallest_np_arc != None:
              self._lift(smallest_np_arc, proj_heads)
              smallest_np_arc = self._get_smallest_nonproj_arc(proj_heads)
 
</s> remove             self._lift(smallest_np_arc, proj_heads)
            smallest_np_arc = self._get_smallest_nonproj_arc(proj_heads)
        deco_labels = self._decorate(heads, proj_heads, labels)
 </s> add             cls._lift(smallest_np_arc, proj_heads)
            smallest_np_arc = cls._get_smallest_nonproj_arc(proj_heads)
        deco_labels = cls._decorate(heads, proj_heads, labels) </s> remove     def projectivize(self, heads, labels):
 </s> add     @classmethod
    def projectivize(cls, heads, labels): </s> remove     def _lift(self, tokenid, heads):
 </s> add     @classmethod
    def _lift(cls, tokenid, heads): </s> remove     def _get_smallest_nonproj_arc(self, heads):
 </s> add     @classmethod
    def _get_smallest_nonproj_arc(cls, heads): </s> remove     def deprojectivize(self, heads, labels):
 </s> add     @classmethod
    def deprojectivize(cls, Doc tokens):
        smallest_np_arc = cls._get_smallest_nonproj_arc(proj_heads)
          # assumes heads to be a proper tree, i.e. connected and cycle-free
          # returns a new pair (heads,labels) which encode
          # a projective and decorated tree
          proj_heads = copy(heads)
        smallest_np_arc = cls._get_smallest_nonproj_arc(proj_heads)
          if smallest_np_arc == None: # this sentence is already projective
              return proj_heads, copy(labels)
          while smallest_np_arc != None:
              self._lift(smallest_np_arc, proj_heads)
              smallest_np_arc = self._get_smallest_nonproj_arc(proj_heads)
keep keep keep keep 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/syntax/nonproj.pyx