Change AbstractServiceDescriptor.methods() to Collection. Resolves #573
diff --git a/benchmarks/src/generated/main/grpc/io/grpc/testing/TestServiceGrpc.java b/benchmarks/src/generated/main/grpc/io/grpc/testing/TestServiceGrpc.java
index 2ef4815..adc89b8 100644
--- a/benchmarks/src/generated/main/grpc/io/grpc/testing/TestServiceGrpc.java
+++ b/benchmarks/src/generated/main/grpc/io/grpc/testing/TestServiceGrpc.java
@@ -79,7 +79,7 @@
     }
 
     @java.lang.Override
-    public com.google.common.collect.ImmutableList<io.grpc.MethodDescriptor<?, ?>> methods() {
+    public java.util.Collection<io.grpc.MethodDescriptor<?, ?>> methods() {
       return com.google.common.collect.ImmutableList.<io.grpc.MethodDescriptor<?, ?>>of(
           unaryCall,
           streamingCall);
diff --git a/benchmarks/src/generated/main/grpc/io/grpc/testing/WorkerGrpc.java b/benchmarks/src/generated/main/grpc/io/grpc/testing/WorkerGrpc.java
index c7905fe..daca204 100644
--- a/benchmarks/src/generated/main/grpc/io/grpc/testing/WorkerGrpc.java
+++ b/benchmarks/src/generated/main/grpc/io/grpc/testing/WorkerGrpc.java
@@ -79,7 +79,7 @@
     }
 
     @java.lang.Override
-    public com.google.common.collect.ImmutableList<io.grpc.MethodDescriptor<?, ?>> methods() {
+    public java.util.Collection<io.grpc.MethodDescriptor<?, ?>> methods() {
       return com.google.common.collect.ImmutableList.<io.grpc.MethodDescriptor<?, ?>>of(
           runTest,
           runServer);
diff --git a/compiler/src/java_plugin/cpp/java_generator.cpp b/compiler/src/java_plugin/cpp/java_generator.cpp
index 3d0da66..5795157 100644
--- a/compiler/src/java_plugin/cpp/java_generator.cpp
+++ b/compiler/src/java_plugin/cpp/java_generator.cpp
@@ -204,7 +204,7 @@
   p->Print(
       *vars,
       "@$Override$\n"
-      "public $ImmutableList$<$MethodDescriptor$<?, ?>> methods() {\n");
+      "public $Collection$<$MethodDescriptor$<?, ?>> methods() {\n");
   p->Indent();
   p->Print(
       *vars,
@@ -674,6 +674,7 @@
   vars["AbstractServiceDescriptor"] =
       "io.grpc.stub.AbstractServiceDescriptor";
   vars["ImmutableList"] = "com.google.common.collect.ImmutableList";
+  vars["Collection"] = "java.util.Collection";
   vars["MethodDescriptor"] = "io.grpc.MethodDescriptor";
   vars["ProtoUtils"] = "io.grpc.protobuf.ProtoUtils";
   vars["NanoUtils"] = "io.grpc.protobuf.nano.NanoUtils";
diff --git a/compiler/src/test/golden/TestService.java.txt b/compiler/src/test/golden/TestService.java.txt
index cb3baf6..a8b4f47 100644
--- a/compiler/src/test/golden/TestService.java.txt
+++ b/compiler/src/test/golden/TestService.java.txt
@@ -121,7 +121,7 @@
     }
 
     @java.lang.Override
-    public com.google.common.collect.ImmutableList<io.grpc.MethodDescriptor<?, ?>> methods() {
+    public java.util.Collection<io.grpc.MethodDescriptor<?, ?>> methods() {
       return com.google.common.collect.ImmutableList.<io.grpc.MethodDescriptor<?, ?>>of(
           unaryCall,
           streamingOutputCall,
diff --git a/compiler/src/test/golden/TestServiceNano.java.txt b/compiler/src/test/golden/TestServiceNano.java.txt
index a75422d..114f671 100644
--- a/compiler/src/test/golden/TestServiceNano.java.txt
+++ b/compiler/src/test/golden/TestServiceNano.java.txt
@@ -183,7 +183,7 @@
     }
 
     @java.lang.Override
-    public com.google.common.collect.ImmutableList<io.grpc.MethodDescriptor<?, ?>> methods() {
+    public java.util.Collection<io.grpc.MethodDescriptor<?, ?>> methods() {
       return com.google.common.collect.ImmutableList.<io.grpc.MethodDescriptor<?, ?>>of(
           unaryCall,
           streamingOutputCall,
diff --git a/examples/src/generated/main/grpc/io/grpc/examples/helloworld/GreeterGrpc.java b/examples/src/generated/main/grpc/io/grpc/examples/helloworld/GreeterGrpc.java
index 2ec5972..d625d4e 100644
--- a/examples/src/generated/main/grpc/io/grpc/examples/helloworld/GreeterGrpc.java
+++ b/examples/src/generated/main/grpc/io/grpc/examples/helloworld/GreeterGrpc.java
@@ -65,7 +65,7 @@
     }
 
     @java.lang.Override
-    public com.google.common.collect.ImmutableList<io.grpc.MethodDescriptor<?, ?>> methods() {
+    public java.util.Collection<io.grpc.MethodDescriptor<?, ?>> methods() {
       return com.google.common.collect.ImmutableList.<io.grpc.MethodDescriptor<?, ?>>of(
           sayHello);
     }
diff --git a/examples/src/generated/main/grpc/io/grpc/examples/routeguide/RouteGuideGrpc.java b/examples/src/generated/main/grpc/io/grpc/examples/routeguide/RouteGuideGrpc.java
index 0cc9454..5ef8d6e 100644
--- a/examples/src/generated/main/grpc/io/grpc/examples/routeguide/RouteGuideGrpc.java
+++ b/examples/src/generated/main/grpc/io/grpc/examples/routeguide/RouteGuideGrpc.java
@@ -107,7 +107,7 @@
     }
 
     @java.lang.Override
-    public com.google.common.collect.ImmutableList<io.grpc.MethodDescriptor<?, ?>> methods() {
+    public java.util.Collection<io.grpc.MethodDescriptor<?, ?>> methods() {
       return com.google.common.collect.ImmutableList.<io.grpc.MethodDescriptor<?, ?>>of(
           getFeature,
           listFeatures,
diff --git a/interop-testing/src/generated/main/grpc/io/grpc/testing/integration/TestServiceGrpc.java b/interop-testing/src/generated/main/grpc/io/grpc/testing/integration/TestServiceGrpc.java
index cb11174..f579b9a 100644
--- a/interop-testing/src/generated/main/grpc/io/grpc/testing/integration/TestServiceGrpc.java
+++ b/interop-testing/src/generated/main/grpc/io/grpc/testing/integration/TestServiceGrpc.java
@@ -135,7 +135,7 @@
     }
 
     @java.lang.Override
-    public com.google.common.collect.ImmutableList<io.grpc.MethodDescriptor<?, ?>> methods() {
+    public java.util.Collection<io.grpc.MethodDescriptor<?, ?>> methods() {
       return com.google.common.collect.ImmutableList.<io.grpc.MethodDescriptor<?, ?>>of(
           emptyCall,
           unaryCall,
diff --git a/stub/src/main/java/io/grpc/stub/AbstractServiceDescriptor.java b/stub/src/main/java/io/grpc/stub/AbstractServiceDescriptor.java
index 0b21224..99fe34f 100644
--- a/stub/src/main/java/io/grpc/stub/AbstractServiceDescriptor.java
+++ b/stub/src/main/java/io/grpc/stub/AbstractServiceDescriptor.java
@@ -31,10 +31,9 @@
 
 package io.grpc.stub;
 
-import com.google.common.collect.ImmutableList;
-
 import io.grpc.MethodDescriptor;
 
+import java.util.Collection;
 import java.util.Map;
 
 /**
@@ -45,9 +44,9 @@
 public abstract class AbstractServiceDescriptor<T extends AbstractServiceDescriptor<?>> {
 
   /**
-   * Returns the list of operations defined in the stub configuration.
+   * Returns an immutable collection of methods defined in the stub configuration.
    */
-  public abstract ImmutableList<MethodDescriptor<?, ?>> methods();
+  public abstract Collection<MethodDescriptor<?, ?>> methods();
 
   /**
    * Returns a new stub configuration for the provided method configurations.