diff --git a/src/test/java/examples/resolver/CustomIntResolver.java b/src/test/java/examples/resolver/CustomIntResolver.java
new file mode 100644
index 0000000..9a15fda
--- /dev/null
+++ b/src/test/java/examples/resolver/CustomIntResolver.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2008-2010 Andrey Somov
+ *
+ * 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 examples.resolver;
+
+import java.util.regex.Pattern;
+
+import org.yaml.snakeyaml.nodes.Tag;
+import org.yaml.snakeyaml.resolver.Resolver;
+
+public class CustomIntResolver extends Resolver {
+    public static final Pattern PURE_INT = Pattern.compile("^[0-9]+$");
+
+    /*
+     * do not resolve int if it has underscores
+     */
+    protected void addImplicitResolvers() {
+        addImplicitResolver(Tag.BOOL, BOOL, "yYnNtTfFoO");
+        addImplicitResolver(Tag.FLOAT, FLOAT, "-+0123456789.");
+        // define simple int pattern
+        addImplicitResolver(Tag.INT, PURE_INT, "0123456789");
+        addImplicitResolver(Tag.MERGE, MERGE, "<");
+        addImplicitResolver(Tag.NULL, NULL, "~nN\0");
+        addImplicitResolver(Tag.NULL, EMPTY, null);
+        addImplicitResolver(Tag.TIMESTAMP, TIMESTAMP, "0123456789");
+        addImplicitResolver(Tag.VALUE, VALUE, "=");
+    }
+}
diff --git a/src/test/java/examples/resolver/CustomResolverTest.java b/src/test/java/examples/resolver/CustomResolverTest.java
index 868dd54..3211ee3 100644
--- a/src/test/java/examples/resolver/CustomResolverTest.java
+++ b/src/test/java/examples/resolver/CustomResolverTest.java
@@ -51,4 +51,18 @@
         assertTrue(map2.toString(), map2.containsKey(new Double(1.0)));
     }
 
+    public void testResolverSimpleInt() {
+        Map<Object, Object> map = new HashMap<Object, Object>();
+        map.put("run_ID", "2010_03_31_101");
+        Yaml yaml = new Yaml(new Loader(), new Dumper(new DumperOptions()), new CustomIntResolver());
+        String output = yaml.dump(map);
+        // load
+        assertEquals("{run_ID: 2010_03_31_101}\n", output);
+        Map<Object, Object> parsed = (Map<Object, Object>) yaml.load(output);
+        assertEquals(map, parsed);
+        // check standard resolver
+        assertEquals("Standard resolver should quote the string", "{run_ID: '2010_03_31_101'}\n",
+                new Yaml().dump(map));
+    }
+
 }
