[400892] Intern all CDOIDs 
https://bugs.eclipse.org/bugs/show_bug.cgi?id=400892
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java
index e305ff1..d649a8c 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java
@@ -60,6 +60,9 @@
   {
   }
 
+  /**
+   * @since 4.2
+   */
   public static <V> Map<CDOID, V> createMap()
   {
     return new HashMap<CDOID, V>();
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
index 8049d4f..78bdf83 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
@@ -27,7 +27,7 @@
 /**
  * @author Simon McDuff
  */
-public class CDOListImpl extends BasicEList<Object> implements InternalCDOList
+public class CDOListImpl extends BasicEList<Object> implements InternalCDOList.ConfigurableEquality
 {
   public static final CDOListFactory FACTORY = new CDOListFactory()
   {
@@ -59,7 +59,7 @@
     CDOType type = CDOModelUtil.getType(classifier);
     int size = size();
 
-    InternalCDOList list = new CDOListImpl(size, 0);
+    CDOListImpl list = new CDOListImpl(size, 0);
     list.setUseEquals(useEquals());
 
     for (int j = 0; j < size; j++)
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListWithElementProxiesImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListWithElementProxiesImpl.java
index fae2d3a..40577fc 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListWithElementProxiesImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListWithElementProxiesImpl.java
@@ -72,7 +72,7 @@
     CDOType type = CDOModelUtil.getType(classifier);
     int size = size();
 
-    InternalCDOList list = new CDOListWithElementProxiesImpl(size, 0, 0);
+    CDOListWithElementProxiesImpl list = new CDOListWithElementProxiesImpl(size, 0, 0);
     list.setUseEquals(useEquals());
 
     for (int j = 0; j < size; j++)
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java
index 7b03ab2..a5f5f21 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java
@@ -76,6 +76,7 @@
 import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
 import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
 import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList.ConfigurableEquality;
 import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
 
 import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
@@ -476,9 +477,9 @@
     }
 
     InternalCDOList list = (InternalCDOList)getListFactory().createList(size, size, referenceChunk);
-    if (feature instanceof EReference)
+    if (feature instanceof EReference && list instanceof ConfigurableEquality)
     {
-      list.setUseEquals(false);
+      ((ConfigurableEquality)list).setUseEquals(false);
     }
 
     for (int j = 0; j < referenceChunk; j++)
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java
index 34a1e77..3d12c0d 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java
@@ -39,6 +39,7 @@
 import org.eclipse.emf.cdo.internal.common.revision.delta.CDORevisionDeltaImpl;
 import org.eclipse.emf.cdo.spi.common.branch.CDOBranchUtil;
 import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList.ConfigurableEquality;
 
 import org.eclipse.net4j.util.om.trace.ContextTracer;
 import org.eclipse.net4j.util.om.trace.PerfTracer;
@@ -355,7 +356,7 @@
   }
 
   /**
-   * @since 3.0
+   * @since 4.2
    */
   public InternalCDOBranch getBranch()
   {
@@ -688,9 +689,9 @@
     if (list == null && size != -1)
     {
       list = (InternalCDOList)CDOListFactory.DEFAULT.createList(size, 0, 0);
-      if (feature instanceof EReference)
+      if (feature instanceof EReference && list instanceof ConfigurableEquality)
       {
-        list.setUseEquals(false);
+        ((ConfigurableEquality)list).setUseEquals(false);
       }
 
       synchronized (this)
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/DelegatingCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/DelegatingCDORevision.java
index 1889c99..4a615db 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/DelegatingCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/DelegatingCDORevision.java
@@ -73,6 +73,9 @@
     return getDelegate().getTimeStamp();
   }
 
+  /**
+   * @since 4.2
+   */
   public InternalCDOBranch getBranch()
   {
     return getDelegate().getBranch();
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java
index eeb0417..03356b5 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java
@@ -50,12 +50,11 @@
   public void setWithoutFrozenCheck(int i, Object value);
 
   /**
+   * @author Eike Stepper
    * @since 4.2
    */
-  public boolean useEquals();
-
-  /**
-   * @since 4.2
-   */
-  public void setUseEquals(boolean useEquals);
+  public interface ConfigurableEquality extends InternalCDOList
+  {
+    public void setUseEquals(boolean useEquals);
+  }
 }
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java
index 432714d..03bab30 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java
@@ -196,6 +196,9 @@
     throw new UnsupportedOperationException(getExceptionMessage());
   }
 
+  /**
+   * @since 4.2
+   */
   public InternalCDOBranch getBranch()
   {
     throw new UnsupportedOperationException(getExceptionMessage());
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java
index 9ca2100..89ed82d 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/WrappedHibernateList.java
@@ -485,13 +485,4 @@
   {
     getDelegate().set(i, value);
   }
-
-  public boolean useEquals()
-  {
-    return true;
-  }
-
-  public void setUseEquals(boolean useEquals)
-  {
-  }
 }
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ref/ReferenceValueMap2.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ref/ReferenceValueMap2.java
index e759e47..e57f92d 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ref/ReferenceValueMap2.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ref/ReferenceValueMap2.java
@@ -32,6 +32,7 @@
  * responsible for applying proper external synchronization!
  *
  * @author Eike Stepper
+ * @since 3.3
  */
 public abstract class ReferenceValueMap2<K, V> extends AbstractMap<K, V>
 {