code: func makeOneExample(i int, sentenceTag treebank.SentenceTag, dict *corpus.Corpus, ts []transition, f lingo.AnnotationFixer) ([]example, error) {
  	var examples []example
  
  	s := sentenceTag.AnnotatedSentence(f)
  	dep := s.Dependency()
  	if dep.IsProjective() {
  		c := newConfiguration(s, true)
  
  		count := 0
  		for !c.isTerminal() && count < 1000 {
  			if count == 999 {
  				return examples, TarpitError{c}
  			}
  
  			oracle := c.oracle(dep)
  			features := getFeatures(c, dict)
  
  			labels := make([]int, MAXTRANSITION)
  			for i, t := range ts {
  				if t == oracle {
  					labels[i] = 1
  				} else if c.canApply(t) {
  					labels[i] = 0
  				} else {
  					labels[i] = -1
  				}
  			}
  
  			ex := example{transition{oracle.Move, oracle.DependencyType}, features, labels}
  			examples = append(examples, ex)
  
  			c.apply(oracle)
  			count++
  		}
  	} else {
  		return nil, NonProjectiveError{dep}
  	}
  
  	return examples, nil
  }
docs: // makeOneExample is an example of a poorly named function. It makes an example from a SentenceTag