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.
