code: func (_m *Plugin) Endorse(payload []byte, sp *peer.SignedProposal) (*peer.Endorsement, []byte, error) {
  	ret := _m.Called(payload, sp)
  
  	var r0 *peer.Endorsement
  	if rf, ok := ret.Get(0).(func([]byte, *peer.SignedProposal) *peer.Endorsement); ok {
  		r0 = rf(payload, sp)
  	} else {
  		if ret.Get(0) != nil {
  			r0 = ret.Get(0).(*peer.Endorsement)
  		}
  	}
  
  	var r1 []byte
  	if rf, ok := ret.Get(1).(func([]byte, *peer.SignedProposal) []byte); ok {
  		r1 = rf(payload, sp)
  	} else {
  		if ret.Get(1) != nil {
  			r1 = ret.Get(1).([]byte)
  		}
  	}
  
  	var r2 error
  	if rf, ok := ret.Get(2).(func([]byte, *peer.SignedProposal) error); ok {
  		r2 = rf(payload, sp)
  	} else {
  		r2 = ret.Error(2)
  	}
  
  	return r0, r1, r2
  }
docs: // Endorse provides a mock function with given fields: payload, sp