code: func (ts *TemporalSet) Setup() error {
  	if ts.Name == "" {
  		return errors.New("Name cannot be empty")
  	}
  	if len(ts.Shards) == 0 {
  		return errors.New("temporal set contains no shards")
  	}
  	for i := range ts.Shards {
  		if ts.Shards[i].WindowEnd.Before(ts.Shards[i].WindowStart) ||
  			ts.Shards[i].WindowEnd.Equal(ts.Shards[i].WindowStart) {
  			return errors.New("WindowStart must be before WindowEnd")
  		}
  	}
  	return nil
  }
docs: // Setup initializes the TemporalSet by parsing the start and end dates
  // and verifying WindowEnd > WindowStart