          templates = get_templates(cfg.features)
          model = ParserModel(templates)
          if path.exists(path.join(model_dir, 'model')):
              model.load(path.join(model_dir, 'model'))
          return cls(strings, moves, model)
  
      @classmethod
      def load(cls, pkg_or_str_or_file, vocab):
          # TODO
          raise NotImplementedError(
 
</s> remove     def __init__(self, StringStore strings, transition_system, ParserModel model):
 </s> add     def __init__(self, StringStore strings, transition_system, ParserModel model, int projectivize = 0): </s> remove     def _lift(self, tokenid, heads):
 </s> add     @classmethod
    def _lift(cls, tokenid, heads): </s> remove     def preprocess_training_data(self, labeled_trees, label_freq_cutoff=30):
        # expects a sequence of pairs of head arrays and labels
 </s> add     delimiter = '||'

    @classmethod
    def decompose(cls, label):
        return label.partition(cls.delimiter)[::2]

    @classmethod
    def is_decorated(cls, label):
        return label.find(cls.delimiter) != -1

    @classmethod
    def preprocess_training_data(cls, gold_tuples, label_freq_cutoff=30): </s> remove     def _make_span_index(self, heads):
        # stores the direct dependents for each token
        # for searching top-down through a tree
        spans = {}
        for tokenid, head in enumerate(heads):
            if tokenid == head: # root
                continue
            if head not in spans:
                spans[head] = []
            spans[head].append(tokenid)
        return spans


    def _filter_labels(self, labeled_trees, cutoff):
 </s> add     @classmethod
    def _filter_labels(cls, gold_tuples, cutoff, freqs):
        return cls(strings, moves, model, cfg.projectivize)
          templates = get_templates(cfg.features)
          model = ParserModel(templates)
          if path.exists(path.join(model_dir, 'model')):
              model.load(path.join(model_dir, 'model'))
        return cls(strings, moves, model, cfg.projectivize)
  
      @classmethod
      def load(cls, pkg_or_str_or_file, vocab):
          # TODO
          raise NotImplementedError(
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/parser.pyx