code: func (q *ContextSuggester) Source(includeName bool) (interface{}, error) {
  	cs := &contextSuggesterRequest{}
  
  	if q.prefix != "" {
  		cs.Prefix = q.prefix
  	}
  
  	suggester := make(map[string]interface{})
  	cs.Completion = suggester
  
  	if q.field != "" {
  		suggester["field"] = q.field
  	}
  	if q.size != nil {
  		suggester["size"] = *q.size
  	}
  	switch len(q.contextQueries) {
  	case 0:
  	case 1:
  		src, err := q.contextQueries[0].Source()
  		if err != nil {
  			return nil, err
  		}
  		suggester["contexts"] = src
  	default:
  		ctxq := make(map[string]interface{})
  		for _, query := range q.contextQueries {
  			src, err := query.Source()
  			if err != nil {
  				return nil, err
  			}
  			// Merge the dictionary into ctxq
  			m, ok := src.(map[string]interface{})
  			if !ok {
  				return nil, errors.New("elastic: context query is not a map")
  			}
  			for k, v := range m {
  				ctxq[k] = v
  			}
  		}
  		suggester["contexts"] = ctxq
  	}
  
  	if !includeName {
  		return cs, nil
  	}
  
  	source := make(map[string]interface{})
  	source[q.name] = cs
  	return source, nil
  }
docs: // Creates the source for the context suggester.