diff --git a/src/main/java/com/typesafe/config/impl/SimpleConfigOrigin.java b/src/main/java/com/typesafe/config/impl/SimpleConfigOrigin.java
index 9dd4681f..ed23e698 100644
--- a/src/main/java/com/typesafe/config/impl/SimpleConfigOrigin.java
+++ b/src/main/java/com/typesafe/config/impl/SimpleConfigOrigin.java
@@ -15,4 +15,23 @@ final class SimpleConfigOrigin implements ConfigOrigin {
         return description;
     }
 
+    @Override
+    public boolean equals(Object other) {
+        if (other instanceof SimpleConfigOrigin) {
+            return this.description
+                    .equals(((SimpleConfigOrigin) other).description);
+        } else {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        return description.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "ConfigOrigin(" + description + ")";
+    }
 }
diff --git a/src/test/scala/com/typesafe/config/impl/ConfigValueTest.scala b/src/test/scala/com/typesafe/config/impl/ConfigValueTest.scala
index 620963c6..d3c26546 100644
--- a/src/test/scala/com/typesafe/config/impl/ConfigValueTest.scala
+++ b/src/test/scala/com/typesafe/config/impl/ConfigValueTest.scala
@@ -13,6 +13,17 @@ import com.typesafe.config.ConfigOrigin
 
 class ConfigValueTest extends TestUtils {
 
+    @Test
+    def configOriginEquality() {
+        val a = new SimpleConfigOrigin("foo")
+        val sameAsA = new SimpleConfigOrigin("foo")
+        val b = new SimpleConfigOrigin("bar")
+
+        checkEqualObjects(a, a)
+        checkEqualObjects(a, sameAsA)
+        checkNotEqualObjects(a, b)
+    }
+
     @Test
     def configIntEquality() {
         val a = intValue(42)
@@ -152,6 +163,8 @@ class ConfigValueTest extends TestUtils {
         dm.toString()
         val dmo = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](emptyObj, subst("a"), subst("b")).asJava)
         dmo.toString()
+
+        fakeOrigin().toString()
     }
 
     private def unsupported(body: => Unit) {