code: func (c *Call) UintArg(key string) (uint64, bool, error) {
  	val, ok := c.Args[key]
  	if !ok {
  		return 0, false, nil
  	}
  	switch tval := val.(type) {
  	case int64:
  		if tval < 0 {
  			return 0, true, fmt.Errorf("value for '%s' must be positive, but got %v", key, tval)
  		}
  		return uint64(tval), true, nil
  	case uint64:
  		return tval, true, nil
  	default:
  		return 0, true, fmt.Errorf("could not convert %v of type %T to uint64 in Call.UintArg", tval, tval)
  	}
  }
docs: // UintArg is for reading the value at key from call.Args as a uint64. If the
  // key is not in Call.Args, the value of the returned bool will be false, and
  // the error will be nil. The value is assumed to be a uint64 or an int64 and
  // then cast to a uint64. An error is returned if the value is not an int64 or
  // uint64.