code: func extractArray(intf interface{}) ([]interface{}, error) {
  	if intf != nil {
  		list, ok := intf.([]interface{})
  		if ok {
  			return list, nil
  		}
  		l, ok := intf.([]map[string]interface{})
  		if !ok {
  			return nil, fmt.Errorf("invalid configuration: neither []interface{} nor []map[string]interface{}")
  		}
  		list = make([]interface{}, 0, len(l))
  		for _, m := range l {
  			list = append(list, m)
  		}
  		return list, nil
  	}
  	return nil, nil
  }
docs: // yaml is decoded as []interface{}
  // but toml is decoded as []map[string]interface{}.
  // currently, viper can't hide this difference.
  // handle the difference here.