func (i *Iterator) Next() interface{} {  
	if len(i.Target) == 0 {
		return nil
	}
	if i.index+1 == len(i.Target) {
		i.index = 0
	} else {
		i.index++
	}
	return i.Value()
}
Next is part of Nextable
package core
import "fmt"
type Iterator struct {
	index  int
	Target []interface{}
}
func (i *Iterator) String() string {
	return fmt.Sprintf("core.Iterator(index=%d,target=%v)", i.index+1, i.Target)  
}
func (i *Iterator) Value() interface{} {
	if len(i.Target) == 0 {
		return nil
	}
	return i.Target[i.index]
}
func (i *Iterator) Index(receiver string) HasValue {
	return ValueFunction{
		StoreString: fmt.Sprintf("%s.Index()", receiver),
		Function: func() interface{} {
			return i.getindex() + 1
		}}
}
func (i *Iterator) getindex() int { return i.index }
func (i *Iterator) S() Sequence {
	if len(i.Target) == 0 {
		return EmptySequence
	}
	v := i.Target[i.index]
	if s, ok := v.(Sequenceable); ok {
		return s.S()
	}
	return EmptySequence
}