code: func (r *Adaptor) Finalize() (err error) {
  	r.mutex.Lock()
  	defer r.mutex.Unlock()
  
  	for _, pin := range r.digitalPins {
  		if pin != nil {
  			if perr := pin.Unexport(); err != nil {
  				err = multierror.Append(err, perr)
  			}
  		}
  	}
  	for _, pin := range r.pwmPins {
  		if pin != nil {
  			if perr := pin.Unexport(); err != nil {
  				err = multierror.Append(err, perr)
  			}
  		}
  	}
  	for _, bus := range r.i2cBuses {
  		if bus != nil {
  			if e := bus.Close(); e != nil {
  				err = multierror.Append(err, e)
  			}
  		}
  	}
  	for _, dev := range r.spiDevices {
  		if dev != nil {
  			if e := dev.Close(); e != nil {
  				err = multierror.Append(err, e)
  			}
  		}
  	}
  	return
  }
docs: // Finalize closes connection to board and pins