Added specific tests for ArrayBlockingQueue and EnumMap based deserialization with object id.
diff --git a/src/test/java/com/fasterxml/jackson/databind/struct/TestObjectIdDeserialization.java b/src/test/java/com/fasterxml/jackson/databind/struct/TestObjectIdDeserialization.java
index 8db0bb5..ec7ed7e 100644
--- a/src/test/java/com/fasterxml/jackson/databind/struct/TestObjectIdDeserialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/struct/TestObjectIdDeserialization.java
@@ -1,10 +1,12 @@
 package com.fasterxml.jackson.databind.struct;
 
+import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.concurrent.ArrayBlockingQueue;
 
 import com.fasterxml.jackson.annotation.JsonAnySetter;
 import com.fasterxml.jackson.annotation.JsonIdentityInfo;
@@ -14,6 +16,7 @@
 import com.fasterxml.jackson.databind.deser.UnresolvedForwardReference.UnresolvedId;
 import com.fasterxml.jackson.databind.struct.TestObjectId.Company;
 import com.fasterxml.jackson.databind.struct.TestObjectId.Employee;
+import com.fasterxml.jackson.databind.struct.TestObjectIdDeserialization.EnumMapCompany.FooEnum;
 
 /**
  * Unit test to verify handling of Object Id deserialization
@@ -120,6 +123,18 @@
         public Employee[] employees;
     }
 
+    static class ArrayBlockingQueueCompany {
+        public ArrayBlockingQueue<Employee> employees;
+    }
+
+    static class EnumMapCompany {
+        public EnumMap<FooEnum,Employee> employees;
+
+        static enum FooEnum {
+            A, B
+        }
+    }
+
     @JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class)
     static class AnySetterObjectId {
         private Map<String, AnySetterObjectId> values = new HashMap<String, AnySetterObjectId>();
@@ -258,6 +273,37 @@
         assertEmployees(firstEmployee, secondEmployee);
     }
 
+    // Do a specific test for ArrayBlockingQueue since it has its own deser.
+    public void testForwardReferenceInQueue()
+        throws Exception
+    {
+        String json = "{\"employees\":["
+                      + "{\"id\":1,\"name\":\"First\",\"manager\":null,\"reports\":[2]},"
+                      + "2,"
+                      +"{\"id\":2,\"name\":\"Second\",\"manager\":1,\"reports\":[]}"
+                      + "]}";
+        ArrayBlockingQueueCompany company = mapper.readValue(json, ArrayBlockingQueueCompany.class);
+        assertEquals(3, company.employees.size());
+        Employee firstEmployee = company.employees.take();
+        Employee secondEmployee = company.employees.take();
+        assertEmployees(firstEmployee, secondEmployee);
+    }
+
+    public void testForwardReferenceInEnumMap()
+        throws Exception
+   {
+        String json = "{\"employees\":{"
+                      + "\"A\":{\"id\":1,\"name\":\"First\",\"manager\":null,\"reports\":[2]},"
+                      + "\"B\": 2,"
+                      + "\"C\":{\"id\":2,\"name\":\"Second\",\"manager\":1,\"reports\":[]}"
+                      + "}}";
+        EnumMapCompany company = mapper.readValue(json, EnumMapCompany.class);
+        assertEquals(3, company.employees.size());
+        Employee firstEmployee = company.employees.get(FooEnum.A);
+        Employee secondEmployee = company.employees.get(FooEnum.B);
+        assertEmployees(firstEmployee, secondEmployee);
+    }
+
     private void assertEmployees(Employee firstEmployee, Employee secondEmployee)
     {
         assertEquals(1, firstEmployee.id);