code: func (c *Call) UintSliceArg(key string) ([]uint64, bool, error) {
  	val, ok := c.Args[key]
  	if !ok {
  		return nil, false, nil
  	}
  
  	switch tval := val.(type) {
  	case []uint64:
  		return tval, true, nil
  	case []int64:
  		ret := make([]uint64, len(tval))
  		for i, v := range tval {
  			ret[i] = uint64(v)
  		}
  		return ret, true, nil
  	default:
  		return nil, true, fmt.Errorf("unexpected type %T in UintSliceArg, val %v", tval, tval)
  	}
  }
docs: // UintSliceArg reads the value at key from call.Args as a slice of uint64. If
  // the key is not in Call.Args, the value of the returned bool will be false,
  // and the error will be nil. If the value is a slice of int64 it will convert
  // it to []uint64. Otherwise, if it is not a []uint64 it will return an error.