code: func (ms *MemoizeSigner) Sign(msg []byte) ([]byte, error) {
  	sig, isInMemory := ms.lookup(msg)
  	if isInMemory {
  		return sig, nil
  	}
  	sig, err := ms.sign(msg)
  	if err != nil {
  		return nil, err
  	}
  	ms.memorize(msg, sig)
  	return sig, nil
  }
docs: // Signer signs a message and returns the signature and nil,
  // or nil and error on failure