Merge pull request #919 from google/moe_writing_branch_from_156c8cc762fab971efb727c7ab107fa243be2fc9

Merge internal changes
diff --git a/core/src/com/google/inject/internal/CycleDetectingLock.java b/core/src/com/google/inject/internal/CycleDetectingLock.java
index 9c46c44..690b151 100644
--- a/core/src/com/google/inject/internal/CycleDetectingLock.java
+++ b/core/src/com/google/inject/internal/CycleDetectingLock.java
@@ -1,14 +1,18 @@
 package com.google.inject.internal;
 
 import com.google.common.base.Preconditions;
+import com.google.common.base.Supplier;
+import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ImmutableListMultimap;
+import com.google.common.collect.LinkedHashMultimap;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Multimap;
-import com.google.common.collect.MultimapBuilder;
+import com.google.common.collect.Multimaps;
 
 import java.util.Collection;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.locks.Lock;
@@ -103,7 +107,7 @@
      * Guarded by {@code this}.
      */
     private final Multimap<Long, ReentrantCycleDetectingLock> locksOwnedByThread =
-        MultimapBuilder.linkedHashKeys().linkedHashSetValues().build();
+        LinkedHashMultimap.create();
 
     /**
      * Creates new lock within this factory context. We can guarantee that locks created by
@@ -234,8 +238,14 @@
           return ImmutableListMultimap.of();
         }
 
-        ListMultimap<Long, ID> potentialLocksCycle =
-            MultimapBuilder.linkedHashKeys().arrayListValues().build();
+        ListMultimap<Long, ID> potentialLocksCycle = Multimaps.newListMultimap(
+            new LinkedHashMap<Long, Collection<ID>>(),
+            new Supplier<List<ID>>() {
+              @Override
+              public List<ID> get() {
+                return Lists.newArrayList();
+              }
+            });
         // lock that is a part of a potential locks cycle, starts with current lock
         ReentrantCycleDetectingLock lockOwnerWaitingOn = this;
         // try to find a dependency path between lock's owner thread and a current thread
diff --git a/extensions/service/src/com/google/inject/service/AsyncService.java b/extensions/service/src/com/google/inject/service/AsyncService.java
index 8efef12..fe0c3a5 100644
--- a/extensions/service/src/com/google/inject/service/AsyncService.java
+++ b/extensions/service/src/com/google/inject/service/AsyncService.java
@@ -17,7 +17,6 @@
 package com.google.inject.service;
 
 import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.Runnables;
 
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
@@ -31,6 +30,10 @@
  * @author dhanji@gmail.com (Dhanji R. Prasanna)
  */
 public abstract class AsyncService implements Service {
+  private static final Runnable DO_NOTHING = new Runnable() {
+    @Override public void run() {}
+  };
+
   private final ExecutorService executor;
 
   private volatile State state;
@@ -45,7 +48,7 @@
 
     // Starts are idempotent.
     if (state == State.STARTED) {
-      return new FutureTask<State>(Runnables.doNothing(), State.STARTED);
+      return new FutureTask<State>(DO_NOTHING, State.STARTED);
     }
 
     return executor.submit(new Callable<State>() {
@@ -70,7 +73,7 @@
 
     // Likewise, stops are idempotent.
     if (state == State.STOPPED) {
-      return new FutureTask<State>(Runnables.doNothing(), State.STOPPED);
+      return new FutureTask<State>(DO_NOTHING, State.STOPPED);
     }
 
     return executor.submit(new Callable<State>() {
diff --git a/pom.xml b/pom.xml
index 70d9fa4..a34a9d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -443,7 +443,7 @@
       </modules>
       <!-- Disable doclint under JDK 8 -->
       <reporting>
-        <plugins>
+      <plugins>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-javadoc-plugin</artifactId>
@@ -466,16 +466,5 @@
       </build>
     </profile>
   </profiles>
-
   <!-- TODO(cgruber): Update the google parent pom or migrate to sonatype's -->
-  <!-- TODO(cgruber): Comment out dagger-adapter from extensions/pom.xml if v2 is not released. -->
-  <repositories>
-    <repository>
-      <id>sonatype-nexus-snapshots</id>
-      <name>Sonatype Nexus Snapshots</name>
-      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
-      <releases><enabled>false</enabled></releases>
-      <snapshots><enabled>true</enabled></snapshots>
-    </repository>
-  </repositories>
 </project>