improving test for merging beans when tags are present in the document

Update issue 100
see issue100-1.yaml. If tag specified we now correctly create beans by merging existing maps.
More tests for this case are welcome ;)
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue100/DataMore.java b/src/test/java/org/yaml/snakeyaml/issues/issue100/DataMore.java
new file mode 100644
index 0000000..a326355
--- /dev/null
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue100/DataMore.java
@@ -0,0 +1,8 @@
+package org.yaml.snakeyaml.issues.issue100;
+
+public class DataMore extends Data {
+    public DataMore() {
+        setId("-1");
+        setAge(-1);
+    }
+}
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java
index 100829a..63687df 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue100/MergeJavaBeanTest.java
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import junit.framework.TestCase;
@@ -44,20 +45,39 @@
     @SuppressWarnings("unchecked")
     public void testMergeWithTags() throws IOException {
         String input = Util.getLocalResource("issues/issue100-1.yaml");
-        //System.out.println(input);
+        // System.out.println(input);
         Yaml yaml = new Yaml();
-        List<Data> list = (List<Data>) yaml.load(input);
+        List<?> list = (List<?>) yaml.load(input);
         // First object: Data ( 11, "id123" )
-        assertEquals(11, list.get(0).getAge());
-        assertEquals("id123", list.get(0).getId());
+        assertEquals(list.get(0).getClass(), Data.class);
+        assertEquals(11, ((Data) list.get(0)).getAge());
+        assertEquals("id123", ((Data) list.get(0)).getId());
 
         // Second object: Data ( 13, "id456" )
-        assertEquals(13, list.get(1).getAge());
-        assertEquals("id456", list.get(1).getId());
+        assertEquals(list.get(1).getClass(), Data.class);
+        assertEquals(13, ((Data) list.get(1)).getAge());
+        assertEquals("id456", ((Data) list.get(1)).getId());
 
         // Third object: Data ( 11, "id789" )
-        assertEquals(11, list.get(2).getAge());
-        assertEquals("id789", list.get(2).getId());
+        assertEquals(list.get(2).getClass(), Data.class);
+        assertEquals(11, ((Data) list.get(2)).getAge());
+        assertEquals("id789", ((Data) list.get(2)).getId());
+
+        // 4th object: DataMore ( 30, "id123" )
+        assertEquals(list.get(3).getClass(), DataMore.class);
+        assertEquals(30, ((DataMore) list.get(3)).getAge());
+        assertEquals("id123", ((DataMore) list.get(3)).getId());
+
+        // 5th object: Map ( age: 100 )
+        assertTrue(list.get(4) instanceof Map);
+        assertEquals(1, ((Map<?, ?>) list.get(4)).size());
+        assertTrue(((Map<?, ?>) list.get(4)).containsKey("age"));
+        assertEquals(100, ((Map<?, ?>) list.get(4)).get("age"));
+
+        // 6th object: DataMore ( 100, "id789" )
+        assertEquals(list.get(5).getClass(), DataMore.class);
+        assertEquals(100, ((DataMore) list.get(5)).getAge());
+        assertEquals("id789", ((DataMore) list.get(5)).getId());
     }
 
     @SuppressWarnings("unchecked")
diff --git a/src/test/resources/issues/issue100-1.yaml b/src/test/resources/issues/issue100-1.yaml
index cba43b2..95a674c 100644
--- a/src/test/resources/issues/issue100-1.yaml
+++ b/src/test/resources/issues/issue100-1.yaml
@@ -3,9 +3,17 @@
  id: id123 
  age: 11
 - !!org.yaml.snakeyaml.issues.issue100.Data
- <<: *id001 
+ <<: *id001
  id: id456
  age: 13 
 - !!org.yaml.snakeyaml.issues.issue100.Data
+ &id003
  <<: *id001 
  id: id789
+- !!org.yaml.snakeyaml.issues.issue100.DataMore
+ <<: *id001 
+ age: 30
+- &id004
+ age: 100
+- !!org.yaml.snakeyaml.issues.issue100.DataMore
+ <<: [*id004, *id003]