code: func (a *AliasAddAction) Source() (interface{}, error) {
  	a.removeBlankIndexNames()
  	if err := a.Validate(); err != nil {
  		return nil, err
  	}
  	src := make(map[string]interface{})
  	act := make(map[string]interface{})
  	src["add"] = act
  	act["alias"] = a.alias
  	switch len(a.index) {
  	case 1:
  		act["index"] = a.index[0]
  	default:
  		act["indices"] = a.index
  	}
  	if a.filter != nil {
  		f, err := a.filter.Source()
  		if err != nil {
  			return nil, err
  		}
  		act["filter"] = f
  	}
  	if len(a.routing) > 0 {
  		act["routing"] = a.routing
  	}
  	if len(a.indexRouting) > 0 {
  		act["index_routing"] = a.indexRouting
  	}
  	if len(a.searchRouting) > 0 {
  		act["search_routing"] = a.searchRouting
  	}
  	if a.isWriteIndex != nil {
  		act["is_write_index"] = *a.isWriteIndex
  	}
  	return src, nil
  }
docs: // Source returns the JSON-serializable data.