code: func NewSource(opts ...source.Option) source.Source {
  	options := source.NewOptions(opts...)
  
  	var sp []string
  	var pre []string
  	if p, ok := options.Context.Value(strippedPrefixKey{}).([]string); ok {
  		sp = p
  	}
  
  	if p, ok := options.Context.Value(prefixKey{}).([]string); ok {
  		pre = p
  	}
  
  	if len(sp) > 0 || len(pre) > 0 {
  		pre = append(pre, DefaultPrefixes...)
  	}
  	return &env{prefixes: pre, strippedPrefixes: sp, opts: options}
  }
docs: // NewSource returns a config source for parsing ENV variables.
  // Underscores are delimiters for nesting, and all keys are lowercased.
  //
  // Example:
  //      "DATABASE_SERVER_HOST=localhost" will convert to
  //
  //      {
  //          "database": {
  //              "server": {
  //                  "host": "localhost"
  //              }
  //          }
  //      }