func (g *ErrorsGenerator) Next() (Error, int) {
	if g.current == nil {
		return Error{}, -1
	}
	retv := g.current.Data
	reti := g.iter
	g.current = g.current.next
	g.iter++
	return retv, reti
}
Next returns the current value, and it's index in the list, and sets up the next value to be
returned.
package graphql
type Errors struct {
	Data Error
	next *Errors
	pos  int
}
func (es *Errors) Add(data Error) *Errors {
	var pos int
	if es != nil {
		pos = es.pos + 1
	}
	return &Errors{
		Data: data,
		next: es,
		pos:  pos,
	}
}
func (es *Errors) ForEach(fn func(e Error, i int)) {
	if es == nil {
		return
	}
	iter := 0
	current := es
	for {
		fn(current.Data, iter)
		if current.next == nil {
			break
		}
		iter++
		current = current.next
	}
}
type ErrorsGenerator struct {
	original *Errors
	current  *Errors
	iter     int
	length   int
}