I ran emma coverage and deleted some dead code. There's a few things that have insufficient test coverage that we need tests for...

git-svn-id: https://google-guice.googlecode.com/svn/trunk@494 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/src/com/google/inject/BoundProviderFactory.java b/src/com/google/inject/BoundProviderFactory.java
index f39e8ae..3cbfc11 100644
--- a/src/com/google/inject/BoundProviderFactory.java
+++ b/src/com/google/inject/BoundProviderFactory.java
@@ -37,15 +37,6 @@
     this.source = source;
   }
 
-  BoundProviderFactory(
-      Key<? extends Provider<? extends T>> providerKey,
-      InternalFactory<? extends Provider<? extends T>> providerFactory,
-      Object source) {
-    this.providerKey = providerKey;
-    this.providerFactory = providerFactory;
-    this.source = source;
-  }
-
   public void notify(final InjectorImpl injector) {
     injector.withDefaultSource(source, new Runnable() {
       public void run() {
@@ -58,10 +49,6 @@
     });
   }
 
-  public String toString() {
-    return providerKey.toString();
-  }
-
   public T get(InternalContext context, InjectionPoint<?> injectionPoint) {
     Provider<? extends T> provider = providerFactory.get(context, injectionPoint);
     try {
@@ -72,4 +59,8 @@
       throw new ProvisionException(e, ErrorMessages.ERROR_IN_PROVIDER);
     }
   }
+
+  @Override public String toString() {
+    return providerKey.toString();
+  }
 }
diff --git a/src/com/google/inject/ClassBindingImpl.java b/src/com/google/inject/ClassBindingImpl.java
index 65cdf30..36fb272 100644
--- a/src/com/google/inject/ClassBindingImpl.java
+++ b/src/com/google/inject/ClassBindingImpl.java
@@ -73,8 +73,7 @@
     return injectors;
   }
 
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return new ToStringBuilder(ClassBinding.class)
         .add("class", getBoundClass())
         .add("scope", scope)
diff --git a/src/com/google/inject/ConfigurationException.java b/src/com/google/inject/ConfigurationException.java
index d73ebd5..6e0dd09 100644
--- a/src/com/google/inject/ConfigurationException.java
+++ b/src/com/google/inject/ConfigurationException.java
@@ -26,12 +26,4 @@
   ConfigurationException(String message) {
     super(message);
   }
-
-  ConfigurationException(String message, Throwable cause) {
-    super(message, cause);
-  }
-
-  ConfigurationException(Throwable cause) {
-    super(cause);
-  }
 }
diff --git a/src/com/google/inject/ConstructorInjector.java b/src/com/google/inject/ConstructorInjector.java
index b501a41..32732d5 100644
--- a/src/com/google/inject/ConstructorInjector.java
+++ b/src/com/google/inject/ConstructorInjector.java
@@ -16,10 +16,13 @@
 
 package com.google.inject;
 
+import com.google.inject.InjectorImpl.SingleMemberInjector;
+import com.google.inject.InjectorImpl.SingleParameterInjector;
 import com.google.inject.internal.ErrorMessages;
 import com.google.inject.internal.ResolveFailedException;
 
 import java.lang.reflect.InvocationTargetException;
+import java.util.List;
 
 /**
  * Injects constructors.
@@ -29,29 +32,20 @@
 class ConstructorInjector<T> {
 
   final Class<T> implementation;
-  final InjectorImpl.SingleMemberInjector[] memberInjectors;
-  final InjectorImpl.SingleParameterInjector<?>[] parameterInjectors;
+  final SingleMemberInjector[] memberInjectors;
+  final SingleParameterInjector<?>[] parameterInjectors;
   final ConstructionProxy<T> constructionProxy;
 
   ConstructorInjector(InjectorImpl injector, Class<T> implementation) {
     this.implementation = implementation;
     constructionProxy = injector.reflection.getConstructionProxy(implementation);
     parameterInjectors = createParameterInjector(injector, constructionProxy);
-    memberInjectors = injector.injectors.get(implementation)
-        .toArray(new InjectorImpl.SingleMemberInjector[0]);
+    List<SingleMemberInjector> memberInjectorsList = injector.injectors.get(implementation);
+    memberInjectors = memberInjectorsList.toArray(
+        new SingleMemberInjector[memberInjectorsList.size()]);
   }
 
-  /**
-   * Used to create an invalid injector.
-   */
-  private ConstructorInjector() {
-    implementation = null;
-    memberInjectors = null;
-    parameterInjectors = null;
-    constructionProxy = null;
-  }
-
-  InjectorImpl.SingleParameterInjector<?>[] createParameterInjector(
+  SingleParameterInjector<?>[] createParameterInjector(
       InjectorImpl injector, ConstructionProxy<T> constructionProxy) {
     try {
       return constructionProxy.getParameters().isEmpty()
@@ -121,19 +115,4 @@
       constructionContext.removeCurrentReference();
     }
   }
-
-  /**
-   * Returns an invalid constructor. This enables us to keep running and
-   * reporting legitimate errors.
-   */
-  static <T> ConstructorInjector<T> invalidConstructor() {
-    return new ConstructorInjector<T>() {
-      Object construct(InternalContext context, Class<?> expectedType) {
-        throw new UnsupportedOperationException();
-      }
-      public T get() {
-        throw new UnsupportedOperationException();
-      }
-    };
-  }
 }
diff --git a/src/com/google/inject/InjectionPoint.java b/src/com/google/inject/InjectionPoint.java
index b663aa9..7e363da 100644
--- a/src/com/google/inject/InjectionPoint.java
+++ b/src/com/google/inject/InjectionPoint.java
@@ -84,7 +84,7 @@
 
   <T> T checkForNull(T value, Object source) {
     if (value != null
-        || getNullability() == Nullability.NULLABLE
+        || allowsNull()
         || allowNullsBadBadBad()) {
       return value;
     }
diff --git a/src/com/google/inject/InvalidBindingImpl.java b/src/com/google/inject/InvalidBindingImpl.java
index a833143..f2213b1 100644
--- a/src/com/google/inject/InvalidBindingImpl.java
+++ b/src/com/google/inject/InvalidBindingImpl.java
@@ -32,7 +32,7 @@
     throw new AssertionError();
   }
 
-  public String toString() {
+  @Override public String toString() {
     return "InvalidBinding";
   }
 }
diff --git a/src/com/google/inject/LinkedBindingImpl.java b/src/com/google/inject/LinkedBindingImpl.java
index 4bebbc8..3693fd9 100644
--- a/src/com/google/inject/LinkedBindingImpl.java
+++ b/src/com/google/inject/LinkedBindingImpl.java
@@ -16,9 +16,9 @@
 
 package com.google.inject;
 
-import com.google.inject.spi.LinkedBinding;
-import com.google.inject.spi.BindingVisitor;
 import com.google.inject.internal.ToStringBuilder;
+import com.google.inject.spi.BindingVisitor;
+import com.google.inject.spi.LinkedBinding;
 
 /**
  *
@@ -44,8 +44,7 @@
     return injector.getBinding(targetKey);
   }
 
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return new ToStringBuilder(LinkedBinding.class)
         .add("key", key)
         .add("target", targetKey)
diff --git a/src/com/google/inject/LinkedProviderBindingImpl.java b/src/com/google/inject/LinkedProviderBindingImpl.java
index c74881b..15f6a71 100644
--- a/src/com/google/inject/LinkedProviderBindingImpl.java
+++ b/src/com/google/inject/LinkedProviderBindingImpl.java
@@ -16,9 +16,9 @@
 
 package com.google.inject;
 
-import com.google.inject.spi.LinkedProviderBinding;
-import com.google.inject.spi.BindingVisitor;
 import com.google.inject.internal.ToStringBuilder;
+import com.google.inject.spi.BindingVisitor;
+import com.google.inject.spi.LinkedProviderBinding;
 
 /**
  *
@@ -44,8 +44,7 @@
     return injector.getBinding(providerKey);
   }
 
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return new ToStringBuilder(LinkedProviderBinding.class)
         .add("key", key)
         .add("provider", providerKey)
diff --git a/src/com/google/inject/Parameter.java b/src/com/google/inject/Parameter.java
index b43329e..d088b4a 100644
--- a/src/com/google/inject/Parameter.java
+++ b/src/com/google/inject/Parameter.java
@@ -19,7 +19,6 @@
 
 import com.google.inject.internal.ErrorHandler;
 import com.google.inject.internal.Keys;
-import net.sf.cglib.reflect.FastConstructor;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
@@ -74,11 +73,6 @@
         constructor.getParameterAnnotations());
   }
 
-  public static List<Parameter<?>> forConstructor(
-      ErrorHandler errorHandler, FastConstructor constructor) {
-    return forConstructor(errorHandler, constructor.getJavaConstructor());
-  }
-
   private static List<Parameter<?>> forMember(ErrorHandler errorHandler, Member member,
       Type[] genericParameterTypes, Annotation[][] annotations) {
     Iterator<Annotation[]> annotationsIterator = Arrays.asList(annotations).iterator();
diff --git a/src/com/google/inject/Scopes.java b/src/com/google/inject/Scopes.java
index a5c2699..bb1eff4 100644
--- a/src/com/google/inject/Scopes.java
+++ b/src/com/google/inject/Scopes.java
@@ -16,9 +16,9 @@
 
 package com.google.inject;
 
-import com.google.inject.internal.StackTraceElements;
 import com.google.inject.internal.ErrorHandler;
 import com.google.inject.internal.ErrorMessages;
+import com.google.inject.internal.StackTraceElements;
 
 import java.lang.annotation.Annotation;
 import java.util.Map;
@@ -66,7 +66,7 @@
       };
     }
 
-    public String toString() {
+    @Override public String toString() {
       return "Scopes.SINGLETON";
     }
   };
@@ -85,7 +85,7 @@
     public <T> Provider<T> scope(Key<T> key, Provider<T> unscoped) {
       return unscoped;
     }
-    public String toString() {
+    @Override public String toString() {
       return "Scopes.NO_SCOPE";
     }
   };
diff --git a/src/com/google/inject/internal/ReferenceCache.java b/src/com/google/inject/internal/ReferenceCache.java
index 85b3285..44bfc2f 100644
--- a/src/com/google/inject/internal/ReferenceCache.java
+++ b/src/com/google/inject/internal/ReferenceCache.java
@@ -61,7 +61,7 @@
       ReferenceType keyReferenceType,
       ReferenceType valueReferenceType,
       final Function<? super K, ? extends V> function) {
-    ensureNotNull(function);
+    Objects.nonNull(function, "function");
     return new ReferenceCache<K, V>(keyReferenceType, valueReferenceType) {
       protected V create(K key) {
         return function.apply(key);
diff --git a/src/com/google/inject/internal/ReferenceMap.java b/src/com/google/inject/internal/ReferenceMap.java
index 515607f..1fa17c4 100644
--- a/src/com/google/inject/internal/ReferenceMap.java
+++ b/src/com/google/inject/internal/ReferenceMap.java
@@ -23,12 +23,7 @@
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.lang.ref.Reference;
-import java.util.AbstractMap;
-import java.util.AbstractSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
@@ -83,7 +78,7 @@
   }
 
   public V get(final Object key) {
-    ensureNotNull(key);
+    Objects.nonNull(key, "key");
     return internalGet((K) key);
   }
 
@@ -100,7 +95,7 @@
   }
 
   public V remove(Object key) {
-    ensureNotNull(key);
+    Objects.nonNull(key, "key");
     Object referenceAwareKey = makeKeyReferenceAware(key);
     Object valueReference = delegate.remove(referenceAwareKey);
     return dereferenceValue(valueReference);
@@ -115,13 +110,13 @@
   }
 
   public boolean containsKey(Object key) {
-    ensureNotNull(key);
+    Objects.nonNull(key, "key");
     Object referenceAwareKey = makeKeyReferenceAware(key);
     return delegate.containsKey(referenceAwareKey);
   }
 
   public boolean containsValue(Object value) {
-    ensureNotNull(value);
+    Objects.nonNull(value, "value");
     for (Object valueReference : delegate.values()) {
       if (value.equals(dereferenceValue(valueReference))) {
         return true;
@@ -318,11 +313,11 @@
       return wrapped;
     }
 
-    public int hashCode() {
+    @Override public int hashCode() {
       return wrapped.hashCode();
     }
 
-    public boolean equals(Object obj) {
+    @Override public boolean equals(Object obj) {
       // defer to reference's equals() logic.
       return obj.equals(this);
     }
@@ -603,13 +598,6 @@
     public void clear() {
       delegate.clear();
     }
-  };
-
-  // TODO(kevinb): use preconditions
-  static void ensureNotNull(Object o) {
-    if (o == null) {
-      throw new NullPointerException();
-    }
   }
 
   static void ensureNotNull(Object... array) {
diff --git a/src/com/google/inject/internal/ReferenceType.java b/src/com/google/inject/internal/ReferenceType.java
index 966d757..671dbc0 100644
--- a/src/com/google/inject/internal/ReferenceType.java
+++ b/src/com/google/inject/internal/ReferenceType.java
@@ -51,5 +51,5 @@
    *
    * @see java.lang.ref.PhantomReference
    */
-  PHANTOM;
+  PHANTOM
 }
diff --git a/src/com/google/inject/internal/Strings.java b/src/com/google/inject/internal/Strings.java
index e9626cf..5b9167b 100644
--- a/src/com/google/inject/internal/Strings.java
+++ b/src/com/google/inject/internal/Strings.java
@@ -22,6 +22,7 @@
  * @author crazybob@google.com (Bob Lee)
  */
 public class Strings {
+  private Strings() {}
 
   /**
    * Returns a string that is equivalent to the specified string with its
@@ -44,8 +45,9 @@
    * @throws NullPointerException if <tt>s</tt> is null
    */
   public static String capitalize(String s) {
-    if (s.length() == 0)
+    if (s.length() == 0) {
       return s;
+    }
     char first = s.charAt(0);
     char capitalized = Character.toUpperCase(first);
     return (first == capitalized)
diff --git a/src/com/google/inject/internal/ToStringBuilder.java b/src/com/google/inject/internal/ToStringBuilder.java
index cdc62b9..0d00776 100644
--- a/src/com/google/inject/internal/ToStringBuilder.java
+++ b/src/com/google/inject/internal/ToStringBuilder.java
@@ -46,7 +46,7 @@
     return this;
   }
 
-  public String toString() {
+  @Override public String toString() {
     return name + map.toString().replace('{', '[').replace('}', ']');
   }
 }
diff --git a/src/com/google/inject/internal/UniqueAnnotations.java b/src/com/google/inject/internal/UniqueAnnotations.java
index 4fff62b..8fdab6e 100644
--- a/src/com/google/inject/internal/UniqueAnnotations.java
+++ b/src/com/google/inject/internal/UniqueAnnotations.java
@@ -27,6 +27,7 @@
  * @author jessewilson@google.com (Jesse Wilson)
  */
 public class UniqueAnnotations {
+  private UniqueAnnotations() {}
   private static final AtomicInteger nextUniqueValue = new AtomicInteger(1);
 
   /**