few tests to fail immmutable object creation
diff --git a/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java b/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java
new file mode 100644
index 0000000..937ab09
--- /dev/null
+++ b/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2008-2010, http://code.google.com/p/snakeyaml/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.yaml.snakeyaml.immutable;
+
+import java.awt.Insets;
+import java.awt.Rectangle;
+import java.util.Arrays;
+
+import javax.swing.border.MatteBorder;
+
+import org.yaml.snakeyaml.nodes.Node;
+import org.yaml.snakeyaml.nodes.Tag;
+import org.yaml.snakeyaml.representer.Represent;
+import org.yaml.snakeyaml.representer.Representer;
+
+public class ImmutablesRepresenter extends Representer {
+
+    public ImmutablesRepresenter() {
+        super();
+        this.representers.put(java.awt.Color.class, new RepresentColor());
+        this.representers.put(Insets.class, new RepresentInsets());
+        this.representers.put(MatteBorder.class, new RepresentMatteBorder());
+        this.representers.put(Rectangle.class, new RepresentRectangle());
+    }
+
+    class RepresentInsets implements Represent {
+
+        public Node representData(Object data) {
+            Insets insets = (Insets) data;
+            return representSequence(getTag(data.getClass(), new Tag(data.getClass())), Arrays
+                    .asList(new Object[] { insets.top, insets.left, insets.bottom, insets.right }),
+                    true);
+        }
+
+    }
+
+    class RepresentRectangle implements Represent {
+
+        public Node representData(Object data) {
+            Rectangle rect = (Rectangle) data;
+            return representSequence(getTag(data.getClass(), new Tag(data.getClass())), Arrays
+                    .asList(new Object[] { rect.x, rect.y, rect.width, rect.height }), true);
+        }
+
+    }
+
+    class RepresentMatteBorder implements Represent {
+
+        public Node representData(Object data) {
+            MatteBorder mb = (MatteBorder) data;
+            return representSequence(getTag(data.getClass(), new Tag(data.getClass())), Arrays
+                    .asList(new Object[] { mb.getBorderInsets(),
+                            mb.getMatteColor() }), true);
+        }
+
+    }
+
+    class RepresentColor implements Represent {
+
+        public Node representData(Object data) {
+            java.awt.Color color = (java.awt.Color) data;
+            return representSequence(getTag(data.getClass(), new Tag(data.getClass())), Arrays
+                    .asList(new Integer[] { color.getRed(), color.getGreen(), color.getBlue(),
+                            color.getAlpha() }), true);
+        }
+
+    }
+}
diff --git a/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java b/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java
new file mode 100644
index 0000000..0cac852
--- /dev/null
+++ b/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2008-2010, http://code.google.com/p/snakeyaml/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.yaml.snakeyaml.immutable;
+
+import java.awt.Color;
+import java.awt.Insets;
+import java.awt.Rectangle;
+
+import javax.swing.BorderFactory;
+import javax.swing.border.MatteBorder;
+
+import org.yaml.snakeyaml.Dumper;
+import org.yaml.snakeyaml.DumperOptions;
+import org.yaml.snakeyaml.Loader;
+import org.yaml.snakeyaml.Yaml;
+
+import junit.framework.TestCase;
+
+public class MoreImmutablesTest extends TestCase {
+
+    public void testInsets() {
+        Yaml yaml = new Yaml(new Loader(), new Dumper(new ImmutablesRepresenter(), new DumperOptions()));
+        Insets insets = new Insets(10, 20, 30, 40);
+        String dump = yaml.dump(insets);
+        assertEquals("!!java.awt.Insets [10, 20, 30, 40]\n", dump);
+        Object loaded = yaml.load(dump);
+        assertEquals(insets, loaded);
+    }
+
+    public void testAwtColor() {
+        Yaml yaml = new Yaml(new Loader(), new Dumper(new ImmutablesRepresenter(), new DumperOptions()));
+        Color color = new Color(10, 20, 30, 40);
+        String dump = yaml.dump(color);
+        assertEquals("!!java.awt.Color [10, 20, 30, 40]\n", dump);
+        Object loaded = yaml.load(dump);
+        assertEquals(color, loaded);
+    }
+
+    public void testRectangle() {
+        Yaml yaml = new Yaml(new Loader(), new Dumper(new ImmutablesRepresenter(), new DumperOptions()));
+        Rectangle rect = new Rectangle(10, 20, 30, 40);
+        String dump = yaml.dump(rect);
+        assertEquals("!!java.awt.Rectangle [10, 20, 30, 40]\n", dump);
+        Object loaded = yaml.load(dump);
+        assertEquals(rect, loaded);
+    }
+    
+    // matteborder - only with color - no icon
+    public void testMatteBorder() {
+        DumperOptions options = new DumperOptions();
+        options.setWidth(400);
+        Yaml yaml = new Yaml(new Loader(), new Dumper(new ImmutablesRepresenter(), options));
+        Insets insets = new Insets(10, 20, 30, 40);
+        Color color = new Color(100, 150, 200);
+        MatteBorder border = BorderFactory.createMatteBorder(insets.top, insets.left, insets.bottom, insets.right, color);
+        String dump = yaml.dump(border);
+        assertEquals("!!javax.swing.border.MatteBorder [!!java.awt.Insets [10, 20, 30, 40], !!java.awt.Color [100, 150, 200, 255]]\n", dump);
+        Object loaded = yaml.load(dump);
+        assertTrue(loaded instanceof MatteBorder);
+        MatteBorder loadedBorder = (MatteBorder) loaded;
+        assertEquals(insets, loadedBorder.getBorderInsets());
+        assertEquals(color, loadedBorder.getMatteColor());
+    }
+    
+}