diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/EscapeStr.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/EscapeStr.java
index 2733442..a6c3455 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/EscapeStr.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/EscapeStr.java
@@ -215,7 +215,6 @@
             {
                 sb.append('\\') ;
                 sb.append(ch2) ;
-                i = i + 1 ;
                 continue ;
             }
 
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestEscapeStr.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestEscapeStr.java
index 74e407a..84d8e83 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestEscapeStr.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestEscapeStr.java
@@ -21,18 +21,17 @@
 import org.junit.Assert ;
 import org.junit.Test ;
 
-// Testing is a bit light here but the RDF term output and 
+// Testing is a bit light here but the RDF term output and
 // the language level output covers the ground as well.
-// See TestQuotedString in ARQ.
 
 public class TestEscapeStr {
-    
+
     @Test public void escape_str_01()   { test_esc("", "") ; }
     @Test public void escape_str_02()   { test_esc("A", "A") ; }
     @Test public void escape_str_03()   { test_esc("\n", "\\n") ; }
     @Test public void escape_str_04()   { test_esc("A\tB", "A\\tB") ; }
     @Test public void escape_str_05()   { test_esc("\"", "\\\"") ; }
-    
+
     @Test public void unescape_str_10()   { test_unesc("\\u0041", "A") ; }
     @Test public void unescape_str_11()   { test_unesc("\\U00000041", "A") ; }
     @Test public void unescape_str_12()   { test_unesc("12\\u004134", "12A34") ; }
@@ -42,10 +41,26 @@
         String output = EscapeStr.stringEsc(input) ;
         Assert.assertEquals(expected, output);
     }
-    
+
     private void test_unesc(String input, String expected) {
         String output = EscapeStr.unescapeStr(input) ;
         Assert.assertEquals(expected, output);
     }
-    
+
+    @Test public void unescape_unicode_1()   { test_unesc_unicode("", "") ; }
+    @Test public void unescape_unicode_2()   { test_unesc_unicode("abc\\u0020def", "abc def") ; }
+    @Test public void unescape_unicode_3()   { test_unesc_unicode("\\u0020", " ") ; }
+    @Test public void unescape_unicode_4()   { test_unesc_unicode("abc\\U00000020def", "abc def") ; }
+    @Test public void unescape_unicode_5()   { test_unesc_unicode("\\U00000020", " ") ; }
+
+    // Leaves non-unicode untouched.
+    @Test public void unescape_unicode_10()   { test_unesc_unicode("\\1\\2", "\\1\\2") ; }
+    @Test public void unescape_unicode_11()   { test_unesc_unicode("\\n\\t", "\\n\\t") ; }
+    @Test public void unescape_unicode_12()   { test_unesc_unicode("\\(\\)", "\\(\\)") ; }
+    @Test public void unescape_unicode_13()   { test_unesc_unicode("\\\\", "\\\\") ; }
+
+    private void test_unesc_unicode(String input, String expected) {
+        String output = EscapeStr.unescapeUnicode(input) ;
+        Assert.assertEquals(expected, output);
+    }
 }
diff --git a/pom.xml b/pom.xml
index 224f742..2506c0c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,7 +57,7 @@
     <ver.log4j2>2.14.1</ver.log4j2>
     <ver.shade-plugin>3.2.4</ver.shade-plugin>
 
-    <ver.jetty>9.4.39.v20210325</ver.jetty>
+    <ver.jetty>9.4.40.v20210413</ver.jetty>
     <ver.shiro>1.7.1</ver.shiro>
 
     <ver.libthrift>0.14.1</ver.libthrift>
@@ -70,8 +70,8 @@
          POM for the correct dependency versions
          and use that or later.
     -->
-    <ver.jsonldjava>0.13.2</ver.jsonldjava>
-    <ver.jackson>2.12.2</ver.jackson>
+    <ver.jsonldjava>0.13.3</ver.jsonldjava>
+    <ver.jackson>2.12.3</ver.jackson>
 
     <ver.commonsio>2.8.0</ver.commonsio>
     <ver.commonscli>1.4</ver.commonscli>
@@ -82,7 +82,7 @@
     <ver.commons-compress>1.20</ver.commons-compress>
 
     <ver.dexxcollection>0.7</ver.dexxcollection>
-    <ver.micrometer>1.6.5</ver.micrometer>
+    <ver.micrometer>1.6.6</ver.micrometer>
 
     <ver.httpclient>4.5.13</ver.httpclient>
     <ver.httpcore>4.4.14</ver.httpcore>
@@ -93,10 +93,10 @@
     <ver.httpclient-osgi>${ver.httpclient}</ver.httpclient-osgi>
     
     <ver.lucene>8.8.0</ver.lucene>
-    <ver.graalvm>21.0.0.2</ver.graalvm>
+    <ver.graalvm>21.1.0</ver.graalvm>
     <ver.jython>2.7.2</ver.jython>
     <ver.jcommander>1.81</ver.jcommander>
-    <ver.mockito>3.8.0</ver.mockito>
+    <ver.mockito>3.9.0</ver.mockito>
     <ver.awaitility>4.0.3</ver.awaitility>
     <ver.contract.tests>0.2.0</ver.contract.tests>
 
