code: func (e *Envelope) ToGossipMessage() (*SignedGossipMessage, error) {
  	if e == nil {
  		return nil, errors.New("nil envelope")
  	}
  	msg := &GossipMessage{}
  	err := proto.Unmarshal(e.Payload, msg)
  	if err != nil {
  		return nil, fmt.Errorf("Failed unmarshaling GossipMessage from envelope: %v", err)
  	}
  	return &SignedGossipMessage{
  		GossipMessage: msg,
  		Envelope:      e,
  	}, nil
  }
docs: // ToGossipMessage un-marshals a given envelope and creates a
  // SignedGossipMessage out of it.
  // Returns an error if un-marshaling fails.