code: func New(opts *FileKeyValueStoreOptions) (*FileKeyValueStore, error) {
  	if opts == nil {
  		return nil, errors.New("FileKeyValueStoreOptions is nil")
  	}
  	if opts.Path == "" {
  		return nil, errors.New("FileKeyValueStore path is empty")
  	}
  	if opts.KeySerializer == nil {
  		// Default key serializer
  		opts.KeySerializer = func(key interface{}) (string, error) {
  			keyString, ok := key.(string)
  			if !ok {
  				return "", errors.New("converting key to string failed")
  			}
  			return filepath.Join(opts.Path, keyString), nil
  		}
  	}
  	if opts.Marshaller == nil {
  		opts.Marshaller = defaultMarshaller
  	}
  	if opts.Unmarshaller == nil {
  		opts.Unmarshaller = defaultUnmarshaller
  	}
  	return &FileKeyValueStore{
  		path:          opts.Path,
  		keySerializer: opts.KeySerializer,
  		marshaller:    opts.Marshaller,
  		unmarshaller:  opts.Unmarshaller,
  	}, nil
  }
docs: // New creates a new instance of FileKeyValueStore using provided options