Fix issue73: set can be loaded as seq
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/Blog.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/Blog.java
index 39ff8ea..2ae3ee6 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue73/Blog.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/Blog.java
@@ -16,15 +16,15 @@
 
 package org.yaml.snakeyaml.issues.issue73;
 
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.TreeSet;
 
-class Blog {
+public class Blog {
 
     private String name;
-    private Set<Post> posts = new HashSet<Post>();
-    public Set<Integer> numbers = new TreeSet<Integer>();
+    private Set<Post> posts = new TreeSet<Post>();
+    public Set<Integer> numbers = new LinkedHashSet<Integer>();
 
     public Blog() {
         name = "SuperBlog";
@@ -49,4 +49,24 @@
     public void setName(String name) {
         this.name = name;
     }
+
+    public void setPosts(Set<Post> posts) {
+        this.posts = posts;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return name.equals(obj.toString());
+    }
+
+    @Override
+    public int hashCode() {
+        return name.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "Blog '" + name + "'";
+    }
+
 }
\ No newline at end of file
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/Post.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/Post.java
index 963e1db..85f85e7 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue73/Post.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/Post.java
@@ -16,7 +16,7 @@
 
 package org.yaml.snakeyaml.issues.issue73;
 
-class Post {
+class Post implements Comparable<Post> {
 
     private String title;
     private String text;
@@ -37,4 +37,8 @@
     public String getText() {
         return text;
     }
+
+    public int compareTo(Post o) {
+        return title.compareTo(o.title);
+    }
 }
\ No newline at end of file
diff --git a/src/test/java/org/yaml/snakeyaml/issues/issue73/SetAsSequenceTest.java b/src/test/java/org/yaml/snakeyaml/issues/issue73/SetAsSequenceTest.java
index 8b5a49d..de2ed00 100644
--- a/src/test/java/org/yaml/snakeyaml/issues/issue73/SetAsSequenceTest.java
+++ b/src/test/java/org/yaml/snakeyaml/issues/issue73/SetAsSequenceTest.java
@@ -20,6 +20,9 @@
 
 import junit.framework.TestCase;
 
+import org.yaml.snakeyaml.Dumper;
+import org.yaml.snakeyaml.DumperOptions;
+import org.yaml.snakeyaml.JavaBeanLoader;
 import org.yaml.snakeyaml.Loader;
 import org.yaml.snakeyaml.Util;
 import org.yaml.snakeyaml.Yaml;
@@ -31,41 +34,47 @@
         Blog blog = new Blog("Test Me!");
         blog.addPost(new Post("Title1", "text 1"));
         blog.addPost(new Post("Title2", "text text 2"));
-        blog.numbers.add(17);
         blog.numbers.add(19);
-        Yaml yaml = new Yaml();
+        blog.numbers.add(17);
+        DumperOptions options = new DumperOptions();
+        options.setAllowReadOnlyProperties(true);
+        Yaml yaml = new Yaml(new Dumper(options));
         String output = yaml.dump(blog);
-        System.out.println(output);
+        // System.out.println(output);
         assertEquals(Util.getLocalResource("issues/issue73-1.txt"), output);
     }
 
     public void testLoad() {
+        Loader loader = new Loader();
+        loader.setBeanAccess(BeanAccess.FIELD);
+        Yaml yaml = new Yaml(loader);
         String doc = Util.getLocalResource("issues/issue73-1.txt");
-        Blog blog = (Blog) constructYamlParser().load(doc);
-        System.out.println(blog);
+        Blog blog = (Blog) yaml.load(doc);
+        // System.out.println(blog);
+        assertEquals("Test Me!", blog.getName());
+        assertEquals(2, blog.numbers.size());
+        assertEquals(2, blog.getPosts().size());
+        for (Post post : blog.getPosts()) {
+            assertEquals(Post.class, post.getClass());
+        }
     }
 
     public void testYaml() {
-        String serialized = "!!org.yaml.snakeyaml.issues.issue73.Blog\n" + "posts:\n"
-                + "  - text: Dummy\n" + "    title: Test\n" + "  - text: Creative\n"
-                + "    title: Highly\n";
-
-        Yaml yaml2 = constructYamlParser();
-        Blog rehydrated = (Blog) yaml2.load(serialized);
+        String serialized = Util.getLocalResource("issues/issue73-2.txt");
+        // System.out.println(serialized);
+        JavaBeanLoader<Blog> beanLoader = new JavaBeanLoader<Blog>(Blog.class, BeanAccess.FIELD);
+        Blog rehydrated = beanLoader.load(serialized);
 
         checkTestBlog(rehydrated);
     }
 
-    protected Yaml constructYamlParser() {
-        Loader loader = new Loader();
-        loader.setBeanAccess(BeanAccess.FIELD);
-
-        Yaml yaml = new Yaml(loader);
-        return yaml;
-    }
-
     protected void checkTestBlog(Blog blog) {
         Set<Post> posts = blog.getPosts();
         assertEquals("Blog contains 2 posts", 2, posts.size());
+        for (Post post : posts) {
+            assertEquals(Post.class, post.getClass());
+        }
+        assertEquals("No tags!", blog.getName());
+        assertEquals(0, blog.numbers.size());
     }
 }
diff --git a/src/test/resources/issues/issue73-1.txt b/src/test/resources/issues/issue73-1.txt
index 7b8437b..67be3af 100644
--- a/src/test/resources/issues/issue73-1.txt
+++ b/src/test/resources/issues/issue73-1.txt
@@ -1,4 +1,9 @@
 !!org.yaml.snakeyaml.issues.issue73.Blog
 name: Test Me!
-numbers: !!set {17: null, 19: null}
+numbers: !!set {19: null, 17: null}
+posts: !!set
+  ? {text: text 1, title: Title1}
+  : null
+  ? {text: text text 2, title: Title2}
+  : null
 
diff --git a/src/test/resources/issues/issue73-2.txt b/src/test/resources/issues/issue73-2.txt
new file mode 100644
index 0000000..ade8322
--- /dev/null
+++ b/src/test/resources/issues/issue73-2.txt
@@ -0,0 +1,7 @@
+name: No tags!
+posts:
+  - text: Dummy
+    title: Test
+  - text: Creative
+    title: Highly
+