code: func NewKeyValueMaybeWipe(cfg jsonconfig.Obj) (KeyValue, error) {
  	kv, err := NewKeyValue(cfg)
  	if err == nil {
  		return kv, nil
  	}
  	if _, ok := err.(NeedWipeError); !ok {
  		return nil, err
  	}
  	wiper, ok := kv.(Wiper)
  	if !ok {
  		return nil, fmt.Errorf("storage type %T needs wiping because %v. But it doesn't support sorted.Wiper", err, kv)
  	}
  	we := err
  	if err := wiper.Wipe(); err != nil {
  		return nil, fmt.Errorf("sorted key/value type %T needed wiping because %v. But could not wipe: %v", kv, we, err)
  	}
  	return kv, nil
  }
docs: // NewKeyValueMaybeWipe calls NewKeyValue and wipes the KeyValue if, and only
  // if, NewKeyValue has returned a NeedWipeError.