assertNotNull(jpBarDeeper);
Service service = proto.getService("SimpleRpc");
assertNotNull(service);
RpcMethod local = service.getRpcMethod("Local");
assertNotNull(local);
assertTrue(local.getArgType() == request);
assertTrue(local.getReturnType() == response);
assertEquals(Boolean.TRUE, local.getExtraOption("rpc.is_streaming_rpc"));
assertEquals("bar", local.getExtraOption("foo"));
assertEquals(Float.valueOf(1.0f), local.getExtraOption("bar.baz"));
assertEquals(Integer.valueOf(1), local.getExtraOption("id"));
RpcMethod theVoid = service.getRpcMethod("theVoid");
assertNotNull(theVoid);
assertTrue(theVoid.isVoidArgType());
assertTrue(theVoid.isVoidReturnType());
RpcMethod localFull = service.getRpcMethod("LocalFull");
assertNotNull(localFull);
assertTrue(localFull.getArgType() == request);
assertTrue(localFull.getReturnType() == response);
RpcMethod localInner = service.getRpcMethod("LocalInner");
assertNotNull(localInner);
assertTrue(localInner.getArgType() == requestInner);
assertTrue(localInner.getReturnType() == responseInner);
RpcMethod localInnerFull = service.getRpcMethod("LocalInnerFull");
assertNotNull(localInnerFull);
assertTrue(localInnerFull.getArgType() == requestInner);
assertTrue(localInnerFull.getReturnType() == responseInner);
RpcMethod localDeeper = service.getRpcMethod("LocalDeeper");
assertNotNull(localDeeper);
assertTrue(localDeeper.getArgType() == requestDeeper);
assertTrue(localDeeper.getReturnType() == responseDeeper);
RpcMethod localDeeperFull = service.getRpcMethod("LocalDeeperFull");
assertNotNull(localDeeperFull);
assertTrue(localDeeperFull.getArgType() == requestDeeper);
assertTrue(localDeeperFull.getReturnType() == responseDeeper);
RpcMethod foreign = service.getRpcMethod("Foreign");
assertNotNull(foreign);
assertTrue(foreign.getArgType() == foo);
assertTrue(foreign.getReturnType() == bar);
RpcMethod foreignFull = service.getRpcMethod("ForeignFull");
assertNotNull(foreignFull);
assertTrue(foreignFull.getArgType() == foo);
assertTrue(foreignFull.getReturnType() == bar);
RpcMethod foreignInner = service.getRpcMethod("ForeignInner");
assertNotNull(foreignInner);
assertTrue(foreignInner.getArgType() == fooInner);
assertTrue(foreignInner.getReturnType() == barInner);
RpcMethod foreignInnerFull = service.getRpcMethod("ForeignInnerFull");
assertNotNull(foreignInnerFull);
assertTrue(foreignInnerFull.getArgType() == fooInner);
assertTrue(foreignInnerFull.getReturnType() == barInner);
RpcMethod foreignDeeper = service.getRpcMethod("ForeignDeeper");
assertNotNull(foreignDeeper);
assertTrue(foreignDeeper.getArgType() == fooDeeper);
assertTrue(foreignDeeper.getReturnType() == barDeeper);
RpcMethod foreignDeeperFull = service.getRpcMethod("ForeignDeeperFull");
assertNotNull(foreignDeeperFull);
assertTrue(foreignDeeperFull.getArgType() == fooDeeper);
assertTrue(foreignDeeperFull.getReturnType() == barDeeper);
RpcMethod jpForeign = service.getRpcMethod("JPForeign");
assertNotNull(jpForeign);
assertTrue(jpForeign.getArgType() == jpFoo);
assertTrue(jpForeign.getReturnType() == jpBar);
RpcMethod jpForeignFull = service.getRpcMethod("JPForeignFull");
assertNotNull(jpForeignFull);
assertTrue(jpForeignFull.getArgType() == jpFoo);
assertTrue(jpForeignFull.getReturnType() == jpBar);
RpcMethod jpForeignInner = service.getRpcMethod("JPForeignInner");
assertNotNull(jpForeignInner);
assertTrue(jpForeignInner.getArgType() == jpFooInner);
assertTrue(jpForeignInner.getReturnType() == jpBarInner);
RpcMethod jpForeignInnerFull = service.getRpcMethod("JPForeignInnerFull");
assertNotNull(jpForeignInnerFull);
assertTrue(jpForeignInnerFull.getArgType() == jpFooInner);
assertTrue(jpForeignInnerFull.getReturnType() == jpBarInner);
RpcMethod jpForeignDeeper = service.getRpcMethod("JPForeignDeeper");
assertNotNull(jpForeignDeeper);
assertTrue(jpForeignDeeper.getArgType() == jpFooDeeper);
assertTrue(jpForeignDeeper.getReturnType() == jpBarDeeper);
RpcMethod jpForeignDeeperFull = service.getRpcMethod("JPForeignDeeperFull");
assertNotNull(jpForeignDeeperFull);
assertTrue(jpForeignDeeperFull.getArgType() == jpFooDeeper);
assertTrue(jpForeignDeeperFull.getReturnType() == jpBarDeeper);
verifyNested(proto.getMessage("Hello"), response,
responseInner, requestInner);
}