add failing test for chain collections
diff --git a/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java b/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java
index b4b2cdb..4a4c8dd 100644
--- a/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java
+++ b/src/test/java/org/yaml/snakeyaml/recursive/HumanTest.java
@@ -6,7 +6,11 @@
 import java.io.IOException;

 import java.util.ArrayList;

 import java.util.Date;

+import java.util.HashMap;

+import java.util.HashSet;

 import java.util.List;

+import java.util.Map;

+import java.util.Set;

 

 import junit.framework.TestCase;

 

@@ -91,4 +95,49 @@
         assertEquals("Father", father2.getBankAccountOwner().getName());

         assertSame(father2, father2.getBankAccountOwner());

     }

+

+    public void testBeanRing() throws IOException {

+        Human man1 = new Human();

+        man1.setName("Man 1");

+        Human man2 = new Human();

+        man2.setName("Man 2");

+        Human man3 = new Human();

+        man3.setName("Man 3");

+        man1.setBankAccountOwner(man2);

+        man2.setBankAccountOwner(man3);

+        man3.setBankAccountOwner(man1);

+        //

+        Yaml yaml = new Yaml();

+        String output = yaml.dump(man1);

+        System.out.println(output);

+        String etalon = Util.getLocalResource("recursive/beanring-3.yaml");

+        assertEquals(etalon, output);

+        //

+        Human loadedMan1 = (Human) yaml.load(output);

+        assertNotNull(loadedMan1);

+        assertEquals("Man 1", loadedMan1.getName());

+        Human loadedMan2 = loadedMan1.getBankAccountOwner();

+        Human loadedMan3 = loadedMan2.getBankAccountOwner();

+        assertSame(loadedMan1, loadedMan3.getBankAccountOwner());

+    }

+

+    public void testCollectionRing() throws IOException {

+        Set<Object> set = new HashSet<Object>();

+        List<Object> list = new ArrayList<Object>();

+        Map<Object, Object> map = new HashMap<Object, Object>();

+        set.add(list);

+        list.add(map);

+        map.put("1", set);

+        //

+        try {

+            Yaml yaml = new Yaml();

+            String output = yaml.dump(set);

+            // String etalon = Util.getLocalResource("recursive/???.yaml");

+            // assertEquals(etalon, output);

+            //

+            // Set<Object> loadedSet = (Set<Object>) yaml.load(output);

+        } catch (StackOverflowError e) {

+            fail("Cannot dump recursive collections.");

+        }

+    }

 }

diff --git a/src/test/resources/recursive/beanring-3.yaml b/src/test/resources/recursive/beanring-3.yaml
new file mode 100644
index 0000000..01167ee
--- /dev/null
+++ b/src/test/resources/recursive/beanring-3.yaml
@@ -0,0 +1,25 @@
+&id001 !!org.yaml.snakeyaml.recursive.Human

+bankAccountOwner:

+  bankAccountOwner:

+    bankAccountOwner: *id001

+    birthPlace: null

+    birthday: null

+    children: []

+    father: null

+    mother: null

+    name: Man 3

+    parner: null

+  birthPlace: null

+  birthday: null

+  children: []

+  father: null

+  mother: null

+  name: Man 2

+  parner: null

+birthPlace: null

+birthday: null

+children: []

+father: null

+mother: null

+name: Man 1

+parner: null
\ No newline at end of file