code: func (cs *ClientServerImpl) AddRequestHandler(f RequestHandler) {
  	firstArg := reflect.TypeOf(f).In(0)
  	firstArgTypeStr := firstArg.Elem().Name()
  	recognizedTypes := cs.GetRecognizedTypes()
  	_, ok := recognizedTypes[firstArgTypeStr]
  	if !ok {
  		panic("AddRequestHandler called with invalid function; argument type not recognized: " + firstArgTypeStr)
  	}
  	cs.RequestHandlers[firstArgTypeStr] = f
  }
docs: // AddRequestHandler adds a request handler to this client.
  // A request handler *must* be a function taking a single argument, and that
  // argument *must* be a pointer to a recognized 'ecsacs' struct.
  // E.g. if you desired to handle messages from acs of type 'FooMessage', you
  // would pass the following handler in:
  //     func(message *ecsacs.FooMessage)
  // This function will panic if the passed in function does not have one pointer
  // argument or the argument is not a recognized type.
  // Additionally, the request handler will block processing of further messages
  // on this connection so it's important that it return quickly.