### Question:
GrpcReflectionUtils { public static GrpcMethodDefinition parseToMethodDefinition(String rawMethodName) { checkArgument(isNotBlank(rawMethodName), "Raw method name can't be empty."); int methodSplitPosition = rawMethodName.lastIndexOf("."); checkArgument(methodSplitPosition != -1, "No package name and service name found."); String methodName = rawMethodName.substring(methodSplitPosition + 1); checkArgument(isNotBlank(methodName), "Method name can't be empty."); String fullServiceName = rawMethodName.substring(0, methodSplitPosition); int serviceSplitPosition = fullServiceName.lastIndexOf("."); String serviceName = fullServiceName.substring(serviceSplitPosition + 1); String packageName = ""; if (serviceSplitPosition != -1) { packageName = fullServiceName.substring(0, serviceSplitPosition); } checkArgument(isNotBlank(serviceName), "Service name can't be empty."); return new GrpcMethodDefinition(packageName, serviceName, methodName); }  static List<FileDescriptorSet> resolveServices(Channel channel); static FileDescriptorSet resolveService(Channel channel, String serviceName); static String fetchFullMethodName(MethodDescriptor methodDescriptor); static MethodType fetchMethodType(MethodDescriptor methodDescriptor); static List<DynamicMessage> parseToMessages(TypeRegistry registry, Descriptor descriptor,
            List<String> jsonTexts); static GrpcMethodDefinition parseToMethodDefinition(String rawMethodName);  }### Answer:
@Test public void testParseToMethodDefinition() { System.out.println(GrpcReflectionUtils.parseToMethodDefinition("io.grpc.reflection.Test.print")); }