code: func AllocTree() depConsOpt {
  	fn := func(d *Dependency) {
  		d.lefts = make([][]int, d.wordCount)
  		d.rights = make([][]int, d.wordCount)
  		for i := 0; i < d.wordCount; i++ {
  			d.lefts[i] = make([]int, 0)
  			d.rights[i] = make([]int, 0)
  		}
  	}
  	return fn
  }
docs: // AllocTree allocates the lefts and rights. Typical construction of the *Dependency doesn't allocate the trees as they're not necessary for a number of tasks.