code: func (a *Automaton) addEpsilon(source, dest int) {
  	t := newTransition()
  	count := a.initTransition(dest, t)
  	for i := 0; i < count; i++ {
  		a.nextTransition(t)
  		a.addTransitionRange(source, t.dest, t.min, t.max)
  	}
  	if a.IsAccept(dest) {
  		a.setAccept(source, true)
  	}
  }
docs: /*
  Add a [virtual] epsilon transition between source and dest. Dest
  state must already have all transitions added because this method
  simply copies those same transitions over to source.
  */