public TReturn Custom <TReturn>(string command, Action <ProtocolWriter> writeAction, Func <ProtocolReader, TReturn> readAction) { return(invoke(Invocation.New(command, writeAction, readAction))); }