Index: core/test/com/google/inject/TypeConversionTest.java
===================================================================
--- core/test/com/google/inject/TypeConversionTest.java	(revision 1577)
+++ core/test/com/google/inject/TypeConversionTest.java	(working copy)
@@ -402,7 +402,7 @@
     @Inject @NumericValue Date date;
   }
 
-  public void testCannotConvertUnannotatedBindings() {
+/*public void testCannotConvertUnannotatedBindings() {
     Injector injector = Guice.createInjector(new AbstractModule() {
       protected void configure() {
         bind(String.class).toInstance("55");
@@ -416,5 +416,5 @@
       Asserts.assertContains(expected.getMessage(),
           "Could not find a suitable constructor in java.lang.Integer.");
     }
-  }
+  }*/
 }
Index: core/test/com/google/inject/ScopesTest.java
===================================================================
--- core/test/com/google/inject/ScopesTest.java	(revision 1577)
+++ core/test/com/google/inject/ScopesTest.java	(working copy)
@@ -241,7 +241,7 @@
     Asserts.assertNotSerializable(Scopes.NO_SCOPE);
   }
 
-  public void testUnscopedProviderWorksOutsideOfRequestedScope() {
+/*public void testUnscopedProviderWorksOutsideOfRequestedScope() {
     final RememberProviderScope scope = new RememberProviderScope();
 
     Injector injector = Guice.createInjector(new AbstractModule() {
@@ -257,7 +257,7 @@
     // this line fails with a NullPointerException because the Providers
     // passed to Scope.scope() don't work outside of the scope() method.
     assertTrue(listProvider.get() instanceof ArrayList);
-  }
+  }*/
 
   public void testScopeAnnotationWithoutRuntimeRetention() {
     try {
Index: core/src/com/google/inject/internal/InjectorShell.java
===================================================================
--- core/src/com/google/inject/internal/InjectorShell.java	(revision 1577)
+++ core/src/com/google/inject/internal/InjectorShell.java	(working copy)
@@ -251,6 +251,15 @@
         new ProviderInstanceBindingImpl<Logger>(injector, key,
             SourceProvider.UNKNOWN_SOURCE, loggerFactory, Scoping.UNSCOPED,
             loggerFactory, ImmutableSet.<InjectionPoint>of()));
+
+    try {
+      Key<org.slf4j.Logger> slf4jKey = Key.get(org.slf4j.Logger.class);
+      SLF4JLoggerFactory slf4jLoggerFactory = new SLF4JLoggerFactory(injector);
+      injector.state.putBinding(slf4jKey,
+          new ProviderInstanceBindingImpl<org.slf4j.Logger>(injector, slf4jKey,
+              SourceProvider.UNKNOWN_SOURCE, slf4jLoggerFactory, Scoping.UNSCOPED,
+              slf4jLoggerFactory, ImmutableSet.<InjectionPoint>of()));
+    } catch (Throwable e) {}
   }
 
   private static class LoggerFactory implements InternalFactory<Logger>, Provider<Logger> {
@@ -270,6 +279,44 @@
     }
   }
 
+  private static class SLF4JLoggerFactory implements InternalFactory<org.slf4j.Logger>, Provider<org.slf4j.Logger> {
+    private final Injector injector;
+
+    private org.slf4j.ILoggerFactory loggerFactory;
+
+    SLF4JLoggerFactory(Injector injector) {
+      this.injector = injector;
+    }
+
+    org.slf4j.ILoggerFactory loggerFactory() {
+      if (loggerFactory == null) {
+        try {
+          loggerFactory = injector.getInstance(org.slf4j.ILoggerFactory.class);
+        } catch (Throwable e) {}
+        if (loggerFactory == null) {
+          loggerFactory = org.slf4j.LoggerFactory.getILoggerFactory();
+        }
+      }
+      return loggerFactory;
+    }
+
+    public org.slf4j.Logger get(Errors errors, InternalContext context, Dependency<?> dependency, boolean linked) {
+      InjectionPoint injectionPoint = dependency.getInjectionPoint();
+      if (injectionPoint != null) {
+        return loggerFactory().getLogger(injectionPoint.getMember().getDeclaringClass().getName());
+      }
+      return loggerFactory().getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
+    }
+
+    public org.slf4j.Logger get() {
+      return loggerFactory().getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
+    }
+
+    public String toString() {
+      return "Provider<org.slf4j.Logger>";
+    }
+  }
+
   private static class RootModule implements Module {
     final Stage stage;
 
Index: core/src/com/google/inject/internal/BytecodeGen.java
===================================================================
--- core/src/com/google/inject/internal/BytecodeGen.java	(revision 1577)
+++ core/src/com/google/inject/internal/BytecodeGen.java	(working copy)
@@ -118,8 +118,7 @@
   end[NO_AOP]*/
 
   /** Use "-Dguice.custom.loader=false" to disable custom classloading. */
-  private static final boolean CUSTOM_LOADER_ENABLED
-      = Boolean.parseBoolean(System.getProperty("guice.custom.loader", "true"));
+  private static final boolean CUSTOM_LOADER_ENABLED;
 
   /**
    * Weak cache of bridge class loaders that make the Guice implementation
@@ -128,6 +127,14 @@
   private static final Map<ClassLoader, ClassLoader> CLASS_LOADER_CACHE;
 
   static {
+    boolean customLoaderEnabled;
+    try {
+      customLoaderEnabled = Boolean.parseBoolean(System.getProperty("guice.custom.loader", "true"));
+    } catch (Throwable e) {
+      customLoaderEnabled = false; // unlikely we'll also have permissions for custom loading
+    }
+    CUSTOM_LOADER_ENABLED = customLoaderEnabled;
+
     if (CUSTOM_LOADER_ENABLED) {
       CLASS_LOADER_CACHE = new MapMaker().weakKeys().weakValues().makeComputingMap(
           new Function<ClassLoader, ClassLoader>() {
Index: core/src/com/google/inject/internal/AbstractBindingProcessor.java
===================================================================
--- core/src/com/google/inject/internal/AbstractBindingProcessor.java	(revision 1577)
+++ core/src/com/google/inject/internal/AbstractBindingProcessor.java	(working copy)
@@ -38,6 +38,12 @@
  */
 abstract class AbstractBindingProcessor extends AbstractProcessor {
 
+//------------------------------------------------------------------------------
+  private static final boolean DISABLE_MISPLACED_ANNOTATION_CHECK
+      = Boolean.parseBoolean(System.getProperty(
+          "guice.disable.misplaced.annotation.check", "false"));
+//------------------------------------------------------------------------------
+
   // It's unfortunate that we have to maintain a blacklist of specific
   // classes, but we can't easily block the whole package because of
   // all our unit tests.
@@ -126,8 +132,14 @@
   }
   
   private <T> void validateKey(Object source, Key<T> key) {
+//------------------------------------------------------------------------------
+if (!DISABLE_MISPLACED_ANNOTATION_CHECK) {
+//------------------------------------------------------------------------------
     Annotations.checkForMisplacedScopeAnnotations(
         key.getTypeLiteral().getRawType(), source, errors);
+//------------------------------------------------------------------------------
+}
+//------------------------------------------------------------------------------
   }
   
   /** 
Index: core/src/com/google/inject/Scopes.java
===================================================================
--- core/src/com/google/inject/Scopes.java	(revision 1577)
+++ core/src/com/google/inject/Scopes.java	(working copy)
@@ -17,7 +17,6 @@
 package com.google.inject;
 
 import com.google.inject.internal.CircularDependencyProxy;
-import com.google.inject.internal.InternalInjectorCreator;
 import com.google.inject.internal.LinkedBindingImpl;
 import com.google.inject.spi.BindingScopingVisitor;
 import com.google.inject.spi.ExposedBinding;
@@ -53,14 +52,9 @@
         public T get() {
           if (instance == null) {
             /*
-             * Use a pretty coarse lock. We don't want to run into deadlocks
-             * when two threads try to load circularly-dependent objects.
-             * Maybe one of these days we will identify independent graphs of
-             * objects and offer to load them in parallel.
-             *
              * This block is re-entrant for circular dependencies.
              */
-            synchronized (InternalInjectorCreator.class) {
+            synchronized (this) {
               if (instance == null) {
                 T provided = creator.get();
 
Index: core/pom.xml
===================================================================
--- core/pom.xml	(revision 1577)
+++ core/pom.xml	(working copy)
@@ -4,19 +4,16 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject</groupId>
+    <groupId>org.sonatype.sisu.inject</groupId>
     <artifactId>guice-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>guice</artifactId>
+  <groupId>org.sonatype.sisu</groupId>
+  <artifactId>sisu-guice</artifactId>
 
-  <name>Google Guice - Core Library</name>
+  <name>Sisu Guice - Core Library</name>
 
-  <properties>
-    <cglib.version>2.2.2</cglib.version>
-  </properties>
-
   <dependencies>
     <dependency>
       <groupId>javax.inject</groupId>
@@ -29,16 +26,23 @@
       <version>1.0</version>
     </dependency>
     <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-      <version>r09</version>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>1.6.2</version>
+      <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>cglib</groupId>
       <artifactId>cglib</artifactId>
-      <version>${cglib.version}</version>
+      <version>2.2.2</version>
+      <optional>true</optional>
     </dependency>
     <dependency>
+      <groupId>org.sonatype.sisu</groupId>
+      <artifactId>sisu-guava</artifactId>
+      <version>0.9.9</version>
+    </dependency>
+    <dependency>
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject-tck</artifactId>
       <version>1</version>
@@ -47,7 +51,7 @@
     <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-beans</artifactId>
-      <version>3.0.5.RELEASE</version>
+      <version>3.0.6.RELEASE</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -59,7 +63,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.framework</artifactId>
-      <version>3.0.5</version>
+      <version>3.2.2</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -83,12 +87,16 @@
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
           <!--
-           | Temporarily excluded tests
+           | Run core tests without SLF4J on the classpath
           -->
+          <classpathDependencyExcludes>
+            <exclude>org.slf4j:slf4j-api</exclude>
+          </classpathDependencyExcludes>
+          <!--
+           | This test needs updating for use with Maven
+          -->
           <excludes>
             <exclude>**/OSGiContainerTest*</exclude>
-            <exclude>**/ScopesTest*</exclude>
-            <exclude>**/TypeConversionTest*</exclude>
           </excludes>
         </configuration>
       </plugin>
@@ -98,6 +106,16 @@
       <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-bundle-plugin</artifactId>
+        <configuration>
+          <instructions>
+            <Bundle-Name>
+              ${project.artifactId}$(if;$(classes;NAMED;*.Interceptor*);; (no_aop))
+            </Bundle-Name>
+            <Require-Bundle>org.sonatype.sisu.guava</Require-Bundle>
+            <DynamicImport-Package>org.slf4j</DynamicImport-Package>
+            <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
+          </instructions>
+        </configuration>
       </plugin>
       <!--
        | Remove duplicate jarjar'd LICENSE and NOTICE
@@ -192,53 +210,109 @@
           <value>!false</value>
         </property>
       </activation>
-      <dependencies>
-        <!--
-         | Mark as optional: embedded by JarJar
-        -->
-        <dependency>
-          <groupId>cglib</groupId>
-          <artifactId>cglib</artifactId>
-          <version>${cglib.version}</version>
-          <optional>true</optional>
-        </dependency>
-      </dependencies>
       <build>
         <plugins>
           <plugin>
             <groupId>org.sonatype.plugins</groupId>
             <artifactId>jarjar-maven-plugin</artifactId>
+            <version>1.5</version>
             <configuration>
+              <overwrite>true</overwrite>
               <includes>
                 <include>*:asm</include>
                 <include>*:cglib</include>
-                <include>*:guava</include>
-                <include>*:jsr305</include>
               </includes>
+              <rules>
+                <rule>
+                  <pattern>net.sf.cglib.*</pattern>
+                  <result>com.google.inject.internal.cglib.$@1</result>
+                </rule>
+                <rule>
+                  <pattern>net.sf.cglib.**.*</pattern>
+                  <result>com.google.inject.internal.cglib.@1.$@2</result>
+                </rule>
+                <rule>
+                  <pattern>org.objectweb.asm.*</pattern>
+                  <result>com.google.inject.internal.asm.$@1</result>
+                </rule>
+                <rule>
+                  <pattern>org.objectweb.asm.**.*</pattern>
+                  <result>com.google.inject.internal.asm.@1.$@2</result>
+                </rule>
+                <keep>
+                  <pattern>com.google.inject.**</pattern>
+                </keep>
+                <keep>
+                  <pattern>com.googlecode.**</pattern>
+                </keep>
+              </rules>
             </configuration>
-          </plugin>
-          <plugin>
             <!--
-             | Package the original non-JarJar'd classes so extensions can compile against them
+             | JarJar all classes before running tests
             -->
-            <artifactId>maven-jar-plugin</artifactId>
             <executions>
               <execution>
-                <id>no_deps</id>
-                <phase>package</phase>
+                <id>jarjar-classes</id>
+                <phase>process-test-classes</phase>
                 <goals>
-                  <goal>jar</goal>
+                  <goal>jarjar</goal>
                 </goals>
                 <configuration>
-                  <classesDirectory>${project.build.directory}/original-classes</classesDirectory>
-                  <classifier>no_deps</classifier>
+                  <input>{classes}</input>
                 </configuration>
               </execution>
+              <execution>
+                <id>jarjar-test-classes</id>
+                <phase>process-test-classes</phase>
+                <goals>
+                  <goal>jarjar</goal>
+                </goals>
+                <configuration>
+                  <input>{test-classes}</input>
+                </configuration>
+              </execution>
             </executions>
           </plugin>
         </plugins>
       </build>
     </profile>
+    <profile>
+      <!--
+       | m2e profile - force use of JarJar inside Eclipse
+      -->
+      <id>m2e</id>
+      <activation>
+        <property>
+          <name>m2e.version</name>
+        </property>
+      </activation>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <groupId>org.eclipse.m2e</groupId>
+              <artifactId>lifecycle-mapping</artifactId>
+              <version>1.0.0</version>
+              <configuration>
+                <lifecycleMappingMetadata>
+                  <pluginExecutions>
+                    <pluginExecution>
+                      <pluginExecutionFilter>
+                        <groupId>org.sonatype.plugins</groupId>
+                        <artifactId>jarjar-maven-plugin</artifactId>
+                        <versionRange>[1.4,)</versionRange>
+                        <goals><goal>jarjar</goal></goals>
+                      </pluginExecutionFilter>
+                      <action><execute /></action>
+                    </pluginExecution>
+                  </pluginExecutions>
+                </lifecycleMappingMetadata>
+              </configuration>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+      </build>
+    </profile>
   </profiles>
 
 </project>
Index: pom.xml
===================================================================
--- pom.xml	(revision 1577)
+++ pom.xml	(working copy)
@@ -18,21 +18,21 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google</groupId>
-    <artifactId>google</artifactId>
-    <version>5</version>
+    <groupId>org.sonatype.forge</groupId>
+    <artifactId>forge-parent</artifactId>
+    <version>10</version>
   </parent>
 
   <packaging>pom</packaging>
 
-  <groupId>com.google.inject</groupId>
+  <groupId>org.sonatype.sisu.inject</groupId>
   <artifactId>guice-parent</artifactId>
-  <version>3.0-SNAPSHOT</version>
+  <version>3.1.0-SNAPSHOT</version>
 
-  <name>Google Guice</name>
+  <name>Sisu Guice</name>
 
   <description>
-    Guice is a lightweight dependency injection framework for Java 5 and above
+    Patched build of Guice: a lightweight dependency injection framework for Java 5 and above
   </description>
 
   <url>http://code.google.com/p/google-guice/</url>
@@ -47,23 +47,23 @@
     <mailingList>
       <name>Guice Users List</name>
       <archive>http://groups.google.com/group/google-guice/topics</archive>
-      <subscribe>http://groups.google.com/group/google-guice/subscribe</subscribe>
-      <unsubscribe>http://groups.google.com/group/google-guice/subscribe</unsubscribe>
+      <subscribe>google-guice+subscribe@googlegroups.com</subscribe>
+      <unsubscribe>google-guice+unsubscribe@googlegroups.com</unsubscribe>
       <post>http://groups.google.com/group/google-guice/post</post>
     </mailingList>
     <mailingList>
       <name>Guice Developers List</name>
       <archive>http://groups.google.com/group/google-guice-dev/topics</archive>
-      <subscribe>http://groups.google.com/group/google-guice-dev/subscribe</subscribe>
-      <unsubscribe>http://groups.google.com/group/google-guice-dev/subscribe</unsubscribe>
+      <subscribe>google-guice-dev+subscribe@googlegroups.com</subscribe>
+      <unsubscribe>google-guice-dev+unsubscribe@googlegroups.com</unsubscribe>
       <post>http://groups.google.com/group/google-guice-dev/post</post>
     </mailingList>
   </mailingLists>
 
   <scm>
-    <connection>scm:svn:http://google-guice.googlecode.com/svn/trunk</connection>
-    <developerConnection>scm:svn:https://google-guice.googlecode.com/svn/trunk</developerConnection>
-    <url>http://code.google.com/p/google-guice/source/browse</url>
+    <connection>scm:git:git@github.com:sonatype/sisu-guice.git</connection>
+    <developerConnection>scm:git:git@github.com:sonatype/sisu-guice.git</developerConnection>
+    <url>http://github.com/sonatype/sisu-guice</url>
   </scm>
 
   <issueManagement>
@@ -73,7 +73,7 @@
 
   <ciManagement>
     <system>Hudson</system>
-    <url>https://grid.sonatype.org/ci/job/Google-Guice/</url>
+    <url>https://builds.sonatype.org/job/sisu-guice/</url>
   </ciManagement>
 
   <licenses>
@@ -97,7 +97,7 @@
     <!--
      | The spec version of the public Guice API
     -->
-    <guice.api.version>1.3</guice.api.version>
+    <guice.api.version>1.4</guice.api.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <!--
      | Use "-Dguice.with.jarjar=false" to build without jarjar
@@ -116,8 +116,7 @@
     <dependency>
       <groupId>org.testng</groupId>
       <artifactId>testng</artifactId>
-      <version>5.11</version>
-      <classifier>jdk15</classifier>
+      <version>6.2</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -153,7 +152,7 @@
         -->
         <plugin>
           <artifactId>maven-remote-resources-plugin</artifactId>
-          <version>1.1</version>
+          <version>1.2.1</version>
           <executions>
             <execution>
               <goals>
@@ -177,7 +176,7 @@
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>animal-sniffer-maven-plugin</artifactId>
-          <version>1.6</version>
+          <version>1.7</version>
           <configuration>
             <signature>
               <groupId>org.codehaus.mojo.signature</groupId>
@@ -195,76 +194,9 @@
             </execution>
           </executions>
         </plugin>
-        <!--
-         | Shared JarJar configuration
-        -->
         <plugin>
-          <groupId>org.sonatype.plugins</groupId>
-          <artifactId>jarjar-maven-plugin</artifactId>
-          <version>1.4</version>
-          <configuration>
-            <rules>
-              <rule>
-                <pattern>net.sf.cglib.*</pattern>
-                <result>com.google.inject.internal.cglib.$@1</result>
-              </rule>
-              <rule>
-                <pattern>net.sf.cglib.**.*</pattern>
-                <result>com.google.inject.internal.cglib.@1.$@2</result>
-              </rule>
-              <rule>
-                <pattern>org.objectweb.asm.*</pattern>
-                <result>com.google.inject.internal.asm.$@1</result>
-              </rule>
-              <rule>
-                <pattern>org.objectweb.asm.**.*</pattern>
-                <result>com.google.inject.internal.asm.@1.$@2</result>
-              </rule>
-              <rule>
-                <pattern>com.google.common.*</pattern>
-                <result>com.google.inject.internal.guava.$@1</result>
-              </rule>
-              <rule>
-                <pattern>com.google.common.**.*</pattern>
-                <result>com.google.inject.internal.guava.@1.$@2</result>
-              </rule>
-              <keep>
-                <pattern>com.google.inject.**</pattern>
-              </keep>
-              <keep>
-                <pattern>com.googlecode.**</pattern>
-              </keep>
-            </rules>
-          </configuration>
-          <!--
-           | JarJar all classes before running tests
-          -->
-          <executions>
-            <execution>
-              <id>jarjar-classes</id>
-              <phase>process-test-classes</phase>
-              <goals>
-                <goal>jarjar</goal>
-              </goals>
-              <configuration>
-                <input>{classes}</input>
-              </configuration>
-            </execution>
-            <execution>
-              <id>jarjar-test-classes</id>
-              <phase>process-test-classes</phase>
-              <goals>
-                <goal>jarjar</goal>
-              </goals>
-              <configuration>
-                <input>{test-classes}</input>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
-        <plugin>
           <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.5</version>
+          <version>2.9</version>
           <configuration>
             <redirectTestOutputToFile>true</redirectTestOutputToFile>
           </configuration>
@@ -275,21 +207,19 @@
         <plugin>
           <groupId>org.apache.felix</groupId>
           <artifactId>maven-bundle-plugin</artifactId>
-          <version>2.1.0</version>
+          <version>2.3.5</version>
           <configuration>
             <instructions>
-              <module>com.google.inject</module>
-              <_include>-${project.basedir}/build.properties</_include>
+              <Bundle-Name>${project.artifactId}</Bundle-Name>
+              <Bundle-SymbolicName>$(maven-symbolicname);singleton:=true</Bundle-SymbolicName>
               <Bundle-Copyright>Copyright (C) 2006 Google Inc.</Bundle-Copyright>
               <Bundle-DocURL>http://code.google.com/p/google-guice/</Bundle-DocURL>
-              <Bundle-Name>${project.artifactId}</Bundle-Name>
-              <Bundle-SymbolicName>$(module)</Bundle-SymbolicName>
+              <Bundle-Vendor>Sonatype, Inc.</Bundle-Vendor>
               <Bundle-RequiredExecutionEnvironment>
                 J2SE-1.5,JavaSE-1.6
               </Bundle-RequiredExecutionEnvironment>
-              <Import-Package>!com.google.inject.*,*</Import-Package>
-              <_exportcontents>!*.internal.*,$(module).*;version=${guice.api.version}</_exportcontents>
-              <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
+              <_exportcontents>!*.internal.*,*;version=${guice.api.version}</_exportcontents>
+              <Import-Package>!com.google.*,*</Import-Package>
               <_nouses>true</_nouses>
               <_removeheaders>
                 Embed-Dependency,Embed-Transitive,
@@ -299,6 +229,9 @@
                 Ignore-Package,Bnd-LastModified
               </_removeheaders>
             </instructions>
+            <archive>
+              <forced>true</forced><!-- dummy entry to stop bundleplugin from picking up jar config -->
+            </archive>
           </configuration>
           <executions>
             <execution>
@@ -314,12 +247,11 @@
         -->
         <plugin>
           <artifactId>maven-jar-plugin</artifactId>
-          <version>2.3.1</version>
+          <version>2.3.2</version>
           <configuration>
             <archive>
               <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
-              <!--  Exclude to mirror ant build -->
-     		  <addMavenDescriptor>false</addMavenDescriptor>
+              <addMavenDescriptor>false</addMavenDescriptor><!--  Exclude to mirror ant build -->
             </archive>
           </configuration>
           <executions>
@@ -333,54 +265,57 @@
         </plugin>
         <plugin>
           <artifactId>maven-javadoc-plugin</artifactId>
-          <version>2.7</version>
+          <version>2.8</version>
+          <configuration>
+            <doclet>com.google.doclava.Doclava</doclet>
+            <docletPath>
+              ${project.basedir}/../lib/doclava.jar:
+              ${project.basedir}/../../lib/doclava.jar
+            </docletPath>
+            <!--
+             | bootclasspath required by Sun's JVM 
+            -->
+            <bootclasspath>${sun.boot.class.path}</bootclasspath>
+            <excludePackageNames>*.internal</excludePackageNames>
+            <additionalparam>
+              -quiet
+              -federate JDK http://download.oracle.com/javase/6/docs/api/index.html?
+              -federationxml JDK http://doclava.googlecode.com/svn/static/api/openjdk-6.xml
+              -hdf project.name "${project.name} (patched build of Google Guice)"
+              -d ${project.build.directory}/apidocs
+            </additionalparam>
+            <useStandardDocletOptions>false</useStandardDocletOptions>
+            <!--
+             | Apple's JVM sometimes requires more memory
+            -->
+            <additionalJOption>-J-Xmx1024m</additionalJOption>
+          </configuration>
         </plugin>
         <plugin>
+          <artifactId>maven-site-plugin</artifactId>
+          <version>3.0</version>
+        </plugin>
+        <plugin>
           <artifactId>maven-source-plugin</artifactId>
           <version>2.1.2</version>
         </plugin>
         <plugin>
           <artifactId>maven-gpg-plugin</artifactId>
-          <version>1.1</version>
+          <version>1.4</version>
         </plugin>
         <plugin>
           <artifactId>maven-release-plugin</artifactId>
-          <version>2.1</version>
+          <version>2.2.1</version>
           <configuration>
             <autoVersionSubmodules>true</autoVersionSubmodules>
           </configuration>
         </plugin>
         <plugin>
           <artifactId>maven-deploy-plugin</artifactId>
-          <version>2.5</version>
+          <version>2.7</version>
         </plugin>
       </plugins>
     </pluginManagement>
   </build>
 
-  <profiles>
-    <profile>
-      <!--
-       | Deployment profile for the Sonatype Grid
-      -->
-      <id>sonatype-grid</id>
-      <properties>
-        <forgeReleaseId>forge-releases</forgeReleaseId>
-        <forgeReleaseUrl>http://repository.sonatype.org:8081/service/local/staging/deploy/maven2</forgeReleaseUrl>
-        <forgeSnapshotId>forge-snapshots</forgeSnapshotId>
-        <forgeSnapshotUrl>http://repository.sonatype.org/content/repositories/snapshots</forgeSnapshotUrl>
-      </properties>
-      <distributionManagement>
-        <repository>
-          <id>${forgeReleaseId}</id>
-          <url>${forgeReleaseUrl}</url>
-        </repository>
-        <snapshotRepository>
-          <id>${forgeSnapshotId}</id>
-          <url>${forgeSnapshotUrl}</url>
-        </snapshotRepository>
-      </distributionManagement>
-    </profile>
-  </profiles>
-
 </project>
Index: extensions/throwingproviders/pom.xml
===================================================================
--- extensions/throwingproviders/pom.xml	(revision 1577)
+++ extensions/throwingproviders/pom.xml	(working copy)
@@ -4,13 +4,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-throwingproviders</artifactId>
 
-  <name>Google Guice - Extensions - ThrowingProviders</name>
+  <name>Sisu Guice - Extensions - ThrowingProviders</name>
 
 </project>
Index: extensions/service/pom.xml
===================================================================
--- extensions/service/pom.xml	(revision 1577)
+++ extensions/service/pom.xml	(working copy)
@@ -4,13 +4,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-service</artifactId>
 
-  <name>Google Guice - Extensions - Service</name>
+  <name>Sisu Guice - Extensions - Service</name>
 
 </project>
Index: extensions/spring/pom.xml
===================================================================
--- extensions/spring/pom.xml	(revision 1577)
+++ extensions/spring/pom.xml	(working copy)
@@ -4,20 +4,20 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-spring</artifactId>
 
-  <name>Google Guice - Extensions - Spring</name>
+  <name>Sisu Guice - Extensions - Spring</name>
 
   <dependencies>
     <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-beans</artifactId>
-      <version>3.0.5.RELEASE</version>
+      <version>3.0.6.RELEASE</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
Index: extensions/jndi/pom.xml
===================================================================
--- extensions/jndi/pom.xml	(revision 1577)
+++ extensions/jndi/pom.xml	(working copy)
@@ -4,13 +4,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-jndi</artifactId>
 
-  <name>Google Guice - Extensions - JNDI</name>
+  <name>Sisu Guice - Extensions - JNDI</name>
 
 </project>
Index: extensions/servlet/src/com/google/inject/servlet/FilterPipeline.java
===================================================================
--- extensions/servlet/src/com/google/inject/servlet/FilterPipeline.java	(revision 1577)
+++ extensions/servlet/src/com/google/inject/servlet/FilterPipeline.java	(working copy)
@@ -39,7 +39,7 @@
  * @author dhanji@gmail.com (Dhanji R. Prasanna)
  */
 @ImplementedBy(DefaultFilterPipeline.class)
-interface FilterPipeline {
+public interface FilterPipeline {
   void initPipeline(ServletContext context) throws ServletException;
   void destroyPipeline();
 
Index: extensions/servlet/src/com/google/inject/servlet/GuiceFilter.java
===================================================================
--- extensions/servlet/src/com/google/inject/servlet/GuiceFilter.java	(revision 1577)
+++ extensions/servlet/src/com/google/inject/servlet/GuiceFilter.java	(working copy)
@@ -64,8 +64,7 @@
   /**
    * We allow both the static and dynamic versions of the pipeline to exist.
    */
-  @Inject
-  private final FilterPipeline injectedPipeline = null;
+  private FilterPipeline injectedPipeline = null;
 
   /** Used to inject the servlets configured via {@link ServletModule} */
   static volatile WeakReference<ServletContext> servletContext =
@@ -98,6 +97,11 @@
     pipeline = new DefaultFilterPipeline();
   }
 
+  @Inject
+  protected void setInjectedPipeline(FilterPipeline pipeline) {
+    injectedPipeline = pipeline;
+  }
+
   public void doFilter(ServletRequest servletRequest,
       ServletResponse servletResponse, FilterChain filterChain)
       throws IOException, ServletException {
Index: extensions/servlet/pom.xml
===================================================================
--- extensions/servlet/pom.xml	(revision 1577)
+++ extensions/servlet/pom.xml	(working copy)
@@ -4,14 +4,14 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-servlet</artifactId>
 
-  <name>Google Guice - Extensions - Servlet</name>
+  <name>Sisu Guice - Extensions - Servlet</name>
 
   <dependencies>
     <dependency>
Index: extensions/struts2/pom.xml
===================================================================
--- extensions/struts2/pom.xml	(revision 1577)
+++ extensions/struts2/pom.xml	(working copy)
@@ -4,18 +4,18 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-struts2</artifactId>
 
-  <name>Google Guice - Extensions - Struts2</name>
+  <name>Sisu Guice - Extensions - Struts2</name>
 
   <dependencies>
     <dependency>
-      <groupId>com.google.inject.extensions</groupId>
+      <groupId>org.sonatype.sisu.inject</groupId>
       <artifactId>guice-servlet</artifactId>
       <version>${project.version}</version>
     </dependency>
@@ -28,7 +28,7 @@
     <dependency>
       <groupId>org.apache.struts</groupId>
       <artifactId>struts2-core</artifactId>
-      <version>2.2.1</version>
+      <version>2.2.3</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
Index: extensions/grapher/test/com/google/inject/grapher/AbstractInjectorGrapherTest.java
===================================================================
--- extensions/grapher/test/com/google/inject/grapher/AbstractInjectorGrapherTest.java	(revision 1577)
+++ extensions/grapher/test/com/google/inject/grapher/AbstractInjectorGrapherTest.java	(working copy)
@@ -26,7 +26,6 @@
 import com.google.inject.Key;
 import com.google.inject.Provider;
 import com.google.inject.spi.InjectionPoint;
-import com.google.testing.testsize.MediumTest;
 
 import junit.framework.TestCase;
 
@@ -41,7 +40,6 @@
  *
  * @author bojand@google.com (Bojan Djordjevic)
  */
-@MediumTest
 public class AbstractInjectorGrapherTest extends TestCase {
   private static final String TEST_STRING = "test";
 
Index: extensions/grapher/pom.xml
===================================================================
--- extensions/grapher/pom.xml	(revision 1577)
+++ extensions/grapher/pom.xml	(working copy)
@@ -4,23 +4,23 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-grapher</artifactId>
 
-  <name>Google Guice - Extensions - Grapher</name>
+  <name>Sisu Guice - Extensions - Grapher</name>
 
   <dependencies>
     <dependency>
-      <groupId>com.google.inject.extensions</groupId>
+      <groupId>org.sonatype.sisu.inject</groupId>
       <artifactId>guice-assistedinject</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>com.google.inject.extensions</groupId>
+      <groupId>org.sonatype.sisu.inject</groupId>
       <artifactId>guice-multibindings</artifactId>
       <version>${project.version}</version>
     </dependency>
Index: extensions/multibindings/pom.xml
===================================================================
--- extensions/multibindings/pom.xml	(revision 1577)
+++ extensions/multibindings/pom.xml	(working copy)
@@ -4,13 +4,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-multibindings</artifactId>
 
-  <name>Google Guice - Extensions - MultiBindings</name>
+  <name>Sisu Guice - Extensions - MultiBindings</name>
 
 </project>
Index: extensions/persist/src/log4j.properties
===================================================================
--- extensions/persist/src/log4j.properties	(revision 1577)
+++ extensions/persist/src/log4j.properties	(working copy)
@@ -1,6 +0,0 @@
-log4j.rootLogger=warn, console
-
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.Target=System.out
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%p [%c{1}] - %m %n
Index: extensions/persist/src/com/google/inject/persist/jpa/JpaPersistService.java
===================================================================
--- extensions/persist/src/com/google/inject/persist/jpa/JpaPersistService.java	(revision 1577)
+++ extensions/persist/src/com/google/inject/persist/jpa/JpaPersistService.java	(working copy)
@@ -42,11 +42,11 @@
   private final ThreadLocal<EntityManager> entityManager = new ThreadLocal<EntityManager>();
 
   private final String persistenceUnitName;
-  private final Properties persistenceProperties;
+  private final Provider<Properties> persistenceProperties;
 
   @Inject
   public JpaPersistService(@Jpa String persistenceUnitName,
-      @Nullable @Jpa Properties persistenceProperties) {
+      @Nullable @Jpa Provider<Properties> persistenceProperties) {
     this.persistenceUnitName = persistenceUnitName;
     this.persistenceProperties = persistenceProperties;
   }
@@ -95,7 +95,7 @@
 
     if (null != persistenceProperties) {
       this.emFactory = Persistence
-          .createEntityManagerFactory(persistenceUnitName, persistenceProperties);
+          .createEntityManagerFactory(persistenceUnitName, persistenceProperties.get());
     } else {
       this.emFactory = Persistence.createEntityManagerFactory(persistenceUnitName);
     }
Index: extensions/persist/src/com/google/inject/persist/jpa/JpaPersistModule.java
===================================================================
--- extensions/persist/src/com/google/inject/persist/jpa/JpaPersistModule.java	(revision 1577)
+++ extensions/persist/src/com/google/inject/persist/jpa/JpaPersistModule.java	(working copy)
@@ -37,6 +37,7 @@
 import java.util.List;
 import java.util.Properties;
 
+import javax.inject.Provider;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 
@@ -55,6 +56,7 @@
   }
 
   private Properties properties;
+  private Class<? extends Provider<? extends Properties>> propertiesProvider;
   private MethodInterceptor transactionInterceptor;
 
   @Override protected void configurePersistence() {
@@ -62,6 +64,9 @@
 
     if (null != properties) {
       bind(Properties.class).annotatedWith(Jpa.class).toInstance(properties);
+    } else if (null != propertiesProvider) {
+      bind(Properties.class).annotatedWith(Jpa.class)
+          .toProvider(propertiesProvider);
     } else {
       bind(Properties.class).annotatedWith(Jpa.class)
           .toProvider(Providers.<Properties>of(null));
@@ -99,6 +104,11 @@
     return this;
   }
 
+  public JpaPersistModule properties(Class<? extends Provider<? extends Properties>> provider) {
+    this.propertiesProvider = provider;
+    return this;
+  }
+
   private final List<Class<?>> dynamicFinders = Lists.newArrayList();
 
   /**
Index: extensions/persist/pom.xml
===================================================================
--- extensions/persist/pom.xml	(revision 1577)
+++ extensions/persist/pom.xml	(working copy)
@@ -4,14 +4,14 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-persist</artifactId>
 
-  <name>Google Guice - Extensions - Persist</name>
+  <name>Sisu Guice - Extensions - Persist</name>
 
   <dependencies>
     <dependency>
@@ -29,7 +29,7 @@
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
-      <version>1.6.1</version>
+      <version>1.6.2</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -41,20 +41,9 @@
     <dependency>
       <groupId>org.hsqldb</groupId>
       <artifactId>hsqldb-j5</artifactId>
-      <version>2.0.0</version>
+      <version>2.2.4</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
 
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <forkMode>never</forkMode>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
 </project>
Index: extensions/pom.xml
===================================================================
--- extensions/pom.xml	(revision 1577)
+++ extensions/pom.xml	(working copy)
@@ -4,17 +4,16 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject</groupId>
+    <groupId>org.sonatype.sisu.inject</groupId>
     <artifactId>guice-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <packaging>pom</packaging>
 
-  <groupId>com.google.inject.extensions</groupId>
-  <artifactId>extensions-parent</artifactId>
+  <artifactId>guice-extensions</artifactId>
 
-  <name>Google Guice - Extensions</name>
+  <name>Sisu Guice - Extensions</name>
 
   <modules>
     <module>assistedinject</module>
@@ -40,16 +39,16 @@
      | All extensions depend on the core
     -->
     <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
+      <groupId>org.sonatype.sisu</groupId>
+      <artifactId>sisu-guice</artifactId>
       <version>${project.version}</version>
     </dependency>
     <!--
      | Some extension tests depend on the core tests
     -->
     <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
+      <groupId>org.sonatype.sisu</groupId>
+      <artifactId>sisu-guice</artifactId>
       <version>${project.version}</version>
       <classifier>tests</classifier>
       <scope>test</scope>
@@ -79,7 +78,7 @@
         <artifactId>maven-bundle-plugin</artifactId>
         <configuration>
           <instructions>
-            <Fragment-Host>com.google.inject</Fragment-Host>
+            <Fragment-Host>org.sonatype.sisu.guice</Fragment-Host>
           </instructions>
         </configuration>
       </plugin>
@@ -89,41 +88,22 @@
   <profiles>
     <profile>
       <!--
-       | JarJar build profile: re-package ASM and CGLIB references under the Guice namespace
+       | Non-JarJar build profile: need CGLIB during tests
       -->
-      <id>guice.with.jarjar</id>
       <activation>
         <property>
           <name>guice.with.jarjar</name>
-          <value>!false</value>
+          <value>false</value>
         </property>
       </activation>
       <dependencies>
-        <!--
-         | Extensions compile first against the non-JarJar'd core - and are then JarJar'd themselves
-         | (optional dependency so it doesn't leak to client projects that depend on Guice artifacts)
-        -->
         <dependency>
-          <groupId>com.google.inject</groupId>
-          <artifactId>guice</artifactId>
-          <version>${project.version}</version>
-          <classifier>no_deps</classifier>
-          <optional>true</optional>
+          <groupId>cglib</groupId>
+          <artifactId>cglib</artifactId>
+          <version>2.2.2</version>
+          <scope>test</scope>
         </dependency>
       </dependencies>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.sonatype.plugins</groupId>
-            <artifactId>jarjar-maven-plugin</artifactId>
-            <configuration>
-              <excludes>
-                <exclude>*:*</exclude>
-              </excludes>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
     </profile>
   </profiles>
 
Index: extensions/assistedinject/pom.xml
===================================================================
--- extensions/assistedinject/pom.xml	(revision 1577)
+++ extensions/assistedinject/pom.xml	(working copy)
@@ -4,13 +4,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-assistedinject</artifactId>
 
-  <name>Google Guice - Extensions - AssistedInject</name>
+  <name>Sisu Guice - Extensions - AssistedInject</name>
 
 </project>
Index: extensions/mini/pom.xml
===================================================================
--- extensions/mini/pom.xml	(revision 1577)
+++ extensions/mini/pom.xml	(working copy)
@@ -4,13 +4,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-mini</artifactId>
 
-  <name>Google Guice - Extensions - Mini</name>
+  <name>Sisu Guice - Extensions - Mini</name>
 
 </project>
Index: extensions/jmx/pom.xml
===================================================================
--- extensions/jmx/pom.xml	(revision 1577)
+++ extensions/jmx/pom.xml	(working copy)
@@ -4,13 +4,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>com.google.inject.extensions</groupId>
-    <artifactId>extensions-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <groupId>org.sonatype.sisu.inject</groupId>
+    <artifactId>guice-extensions</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>guice-jmx</artifactId>
 
-  <name>Google Guice - Extensions - JMX</name>
+  <name>Sisu Guice - Extensions - JMX</name>
 
 </project>
