class TestApi {
  $pb.RpcClient _client;
  TestApi(this._client);

  $async.Future<SomeReply> aMethod($pb.ClientContext ctx, SomeRequest request) {
    var emptyResponse = new SomeReply();
    return _client.invoke<SomeReply>(ctx, 'Test', 'AMethod', request, emptyResponse);
  }
  $async.Future<$0.AnotherReply> anotherMethod($pb.ClientContext ctx, $0.EmptyMessage request) {
    var emptyResponse = new $0.AnotherReply();
    return _client.invoke<$0.AnotherReply>(ctx, 'Test', 'AnotherMethod', request, emptyResponse);
  }
}

