code: func (c *callback) makeArgTypes() {
  	fntype := c.fn.Type()
  	// Skip receiver and context.Context parameter (if present).
  	firstArg := 0
  	if c.rcvr.IsValid() {
  		firstArg++
  	}
  	if fntype.NumIn() > firstArg && fntype.In(firstArg) == contextType {
  		c.hasCtx = true
  		firstArg++
  	}
  	// Add all remaining parameters.
  	c.argTypes = make([]reflect.Type, fntype.NumIn()-firstArg)
  	for i := firstArg; i < fntype.NumIn(); i++ {
  		c.argTypes[i-firstArg] = fntype.In(i)
  	}
  }
docs: // makeArgTypes composes the argTypes list.