code: func (n *node) Save(data interface{}) error {
  	ref := reflect.ValueOf(data)
  
  	if !ref.IsValid() || ref.Kind() != reflect.Ptr || ref.Elem().Kind() != reflect.Struct {
  		return ErrStructPtrNeeded
  	}
  
  	cfg, err := extract(&ref)
  	if err != nil {
  		return err
  	}
  
  	if cfg.ID.IsZero {
  		if !cfg.ID.IsInteger || !cfg.ID.Increment {
  			return ErrZeroID
  		}
  	}
  
  	return n.readWriteTx(func(tx *bolt.Tx) error {
  		return n.save(tx, cfg, data, false)
  	})
  }
docs: // Save a structure