summaryrefslogtreecommitdiffstats
path: root/lowercasing_test
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /lowercasing_test
Publish
Diffstat (limited to 'lowercasing_test')
-rw-r--r--lowercasing_test/.gitignore2
-rw-r--r--lowercasing_test/CMakeLists.txt18
-rw-r--r--lowercasing_test/OWNERS1
-rw-r--r--lowercasing_test/README5
-rw-r--r--lowercasing_test/src/.gitignore3
-rw-r--r--lowercasing_test/src/binref/.gitignore5
-rw-r--r--lowercasing_test/src/binref/CMakeLists.txt5
-rwxr-xr-xlowercasing_test/src/binref/compilejava.in11
-rw-r--r--lowercasing_test/src/binref/env.sh.in4
l---------lowercasing_test/src/binref/progctl.sh1
-rwxr-xr-xlowercasing_test/src/binref/runjava.in13
l---------lowercasing_test/src/binref/testrun.sh1
-rw-r--r--lowercasing_test/src/grouping_test/hello-world-lib/.gitignore2
-rw-r--r--lowercasing_test/src/grouping_test/hello-world-lib/CMakeLists.txt6
-rw-r--r--lowercasing_test/src/grouping_test/hello-world-lib/hello-world.cpp9
-rw-r--r--lowercasing_test/src/grouping_test/hello-world-lib/hello-world.h9
-rw-r--r--lowercasing_test/src/grouping_test/hello-world/.gitignore4
-rw-r--r--lowercasing_test/src/grouping_test/hello-world/CMakeLists.txt8
-rw-r--r--lowercasing_test/src/grouping_test/hello-world/hello-world.cpp24
-rw-r--r--lowercasing_test/src/java/.gitignore3
-rw-r--r--lowercasing_test/src/java/CMakeLists.txt5
-rw-r--r--lowercasing_test/src/java/HelloWorld.java8
-rw-r--r--lowercasing_test/src/java/build.xml61
-rw-r--r--lowercasing_test/src/testlist.txt2
-rwxr-xr-xlowercasing_test/src/tests/create-test.sh73
-rw-r--r--lowercasing_test/src/tests/hello-world/.gitignore6
-rw-r--r--lowercasing_test/src/tests/hello-world/CMakeLists.txt8
-rw-r--r--lowercasing_test/src/tests/hello-world/DESC1
-rw-r--r--lowercasing_test/src/tests/hello-world/FILES5
-rw-r--r--lowercasing_test/src/tests/hello-world/HelloWorldLocal.java8
-rwxr-xr-xlowercasing_test/src/tests/hello-world/dotest.sh15
-rw-r--r--lowercasing_test/src/tests/hello-world/hello-world-local.cpp24
-rwxr-xr-xlowercasing_test/src/tests/hello-world/hello-world_test.sh5
-rw-r--r--lowercasing_test/src/tests/hello-world/ref.txt6
-rw-r--r--lowercasing_test/src/tests/lowercasing/.gitignore10
-rw-r--r--lowercasing_test/src/tests/lowercasing/CMakeLists.txt12
-rw-r--r--lowercasing_test/src/tests/lowercasing/CasingVariants.java34
-rw-r--r--lowercasing_test/src/tests/lowercasing/DESC7
-rw-r--r--lowercasing_test/src/tests/lowercasing/FILES6
-rw-r--r--lowercasing_test/src/tests/lowercasing/casingvariants_fastlib.cpp41
-rw-r--r--lowercasing_test/src/tests/lowercasing/casingvariants_vespalib.cpp53
-rwxr-xr-xlowercasing_test/src/tests/lowercasing/dotest.sh25
-rw-r--r--lowercasing_test/src/tests/lowercasing/fetchletters.py28
-rw-r--r--lowercasing_test/src/tests/lowercasing/letters2605
-rwxr-xr-xlowercasing_test/src/tests/lowercasing/lowercasing_test.sh5
-rw-r--r--lowercasing_test/src/tests/lowercasing/ref.fastlib.txt.java8131
-rw-r--r--lowercasing_test/src/tests/lowercasing/ref.fastlib.txt.java8u20131
-rw-r--r--lowercasing_test/src/tests/lowercasing/ref.txt.java82605
-rw-r--r--lowercasing_test/src/tests/lowercasing/ref.txt.java8u202605
-rw-r--r--lowercasing_test/src/tests/lowercasing/ref.vespalib.txt.java844
-rw-r--r--lowercasing_test/src/tests/lowercasing/ref.vespalib.txt.java8u2044
51 files changed, 8747 insertions, 0 deletions
diff --git a/lowercasing_test/.gitignore b/lowercasing_test/.gitignore
new file mode 100644
index 00000000000..a9b20e8992d
--- /dev/null
+++ b/lowercasing_test/.gitignore
@@ -0,0 +1,2 @@
+Makefile
+Testing
diff --git a/lowercasing_test/CMakeLists.txt b/lowercasing_test/CMakeLists.txt
new file mode 100644
index 00000000000..159b6f6a4d4
--- /dev/null
+++ b/lowercasing_test/CMakeLists.txt
@@ -0,0 +1,18 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_define_module(
+ DEPENDS
+ fastos
+ vespalog
+ vespalib
+ searchlib
+
+ APPS
+ src/binref
+ src/java
+
+ TESTS
+ src/grouping_test/hello-world
+ src/grouping_test/hello-world-lib
+ src/tests/hello-world
+ src/tests/lowercasing
+)
diff --git a/lowercasing_test/OWNERS b/lowercasing_test/OWNERS
new file mode 100644
index 00000000000..569bf1cc3a1
--- /dev/null
+++ b/lowercasing_test/OWNERS
@@ -0,0 +1 @@
+bjorncs
diff --git a/lowercasing_test/README b/lowercasing_test/README
new file mode 100644
index 00000000000..347914fce0c
--- /dev/null
+++ b/lowercasing_test/README
@@ -0,0 +1,5 @@
+This module was created to test that lowercasing is consistent across Java and C++.
+
+If you want to copy the infrastructure from this module you should try
+to copy the hello-world test; it is designed to verify the integrity
+of the testing module itself.
diff --git a/lowercasing_test/src/.gitignore b/lowercasing_test/src/.gitignore
new file mode 100644
index 00000000000..a39df0815b3
--- /dev/null
+++ b/lowercasing_test/src/.gitignore
@@ -0,0 +1,3 @@
+Makefile.ini
+config_command.sh
+project.dsw
diff --git a/lowercasing_test/src/binref/.gitignore b/lowercasing_test/src/binref/.gitignore
new file mode 100644
index 00000000000..c1b83610972
--- /dev/null
+++ b/lowercasing_test/src/binref/.gitignore
@@ -0,0 +1,5 @@
+.depend
+Makefile
+compilejava
+env.sh
+runjava
diff --git a/lowercasing_test/src/binref/CMakeLists.txt b/lowercasing_test/src/binref/CMakeLists.txt
new file mode 100644
index 00000000000..20594f98d02
--- /dev/null
+++ b/lowercasing_test/src/binref/CMakeLists.txt
@@ -0,0 +1,5 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+configure_file(compilejava.in compilejava @ONLY)
+configure_file(runjava.in runjava @ONLY)
+configure_file(env.sh.in env.sh @ONLY)
diff --git a/lowercasing_test/src/binref/compilejava.in b/lowercasing_test/src/binref/compilejava.in
new file mode 100755
index 00000000000..c619b2ebd12
--- /dev/null
+++ b/lowercasing_test/src/binref/compilejava.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+unset VESPA_LOG_TARGET
+CLASSPATH=$CLASSPATH:@PROJECT_SOURCE_DIR@/linguistics/target/linguistics.jar
+CLASSPATH=$CLASSPATH:@PROJECT_SOURCE_DIR@/vespajlib/target/vespajlib.jar
+CLASSPATH=$CLASSPATH:@CMAKE_CURRENT_SOURCE_DIR@/../java/lowercasing_test.jar
+CLASSPATH=$CLASSPATH:.
+if [ $# -lt 1 ]; then
+ echo "usage: compilejava file ..."
+ exit 1
+fi
+exec javac -classpath $CLASSPATH "$@"
diff --git a/lowercasing_test/src/binref/env.sh.in b/lowercasing_test/src/binref/env.sh.in
new file mode 100644
index 00000000000..6a0770c5f9b
--- /dev/null
+++ b/lowercasing_test/src/binref/env.sh.in
@@ -0,0 +1,4 @@
+BINREF=@CMAKE_CURRENT_BINARY_DIR@
+export BINREF
+HELLO_WORLD_APP=$BINREF/../grouping_test/hello-world/lowercasing_test_hello-world_app
+export HELLO_WORLD_APP
diff --git a/lowercasing_test/src/binref/progctl.sh b/lowercasing_test/src/binref/progctl.sh
new file mode 120000
index 00000000000..2c1fb1d47ce
--- /dev/null
+++ b/lowercasing_test/src/binref/progctl.sh
@@ -0,0 +1 @@
+../../../vespalib/src/vespa/vespalib/testkit/progctl.sh \ No newline at end of file
diff --git a/lowercasing_test/src/binref/runjava.in b/lowercasing_test/src/binref/runjava.in
new file mode 100755
index 00000000000..f8a8644808a
--- /dev/null
+++ b/lowercasing_test/src/binref/runjava.in
@@ -0,0 +1,13 @@
+#!/bin/sh
+unset VESPA_LOG_TARGET
+CLASSPATH=$CLASSPATH:@PROJECT_SOURCE_DIR@/linguistics/target/linguistics.jar
+CLASSPATH=$CLASSPATH:@PROJECT_SOURCE_DIR@/vespajlib/target/vespajlib.jar
+CLASSPATH=$CLASSPATH:@CMAKE_CURRENT_SOURCE_DIR@/../java/lowercasing_test.jar
+CLASSPATH=$CLASSPATH:.
+if [ $# -lt 1 ]; then
+ echo "usage: runjava <class> [args]"
+ exit 1
+fi
+CLASS=$1
+shift
+exec java -cp $CLASSPATH $CLASS "$@"
diff --git a/lowercasing_test/src/binref/testrun.sh b/lowercasing_test/src/binref/testrun.sh
new file mode 120000
index 00000000000..56c3c1186d8
--- /dev/null
+++ b/lowercasing_test/src/binref/testrun.sh
@@ -0,0 +1 @@
+../../../vespalib/src/vespa/vespalib/testkit/testrun.sh \ No newline at end of file
diff --git a/lowercasing_test/src/grouping_test/hello-world-lib/.gitignore b/lowercasing_test/src/grouping_test/hello-world-lib/.gitignore
new file mode 100644
index 00000000000..5dae353d999
--- /dev/null
+++ b/lowercasing_test/src/grouping_test/hello-world-lib/.gitignore
@@ -0,0 +1,2 @@
+.depend
+Makefile
diff --git a/lowercasing_test/src/grouping_test/hello-world-lib/CMakeLists.txt b/lowercasing_test/src/grouping_test/hello-world-lib/CMakeLists.txt
new file mode 100644
index 00000000000..a6e6876f152
--- /dev/null
+++ b/lowercasing_test/src/grouping_test/hello-world-lib/CMakeLists.txt
@@ -0,0 +1,6 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_library(lowercasing_test_hello-world-lib STATIC
+ SOURCES
+ hello-world.cpp
+ DEPENDS
+)
diff --git a/lowercasing_test/src/grouping_test/hello-world-lib/hello-world.cpp b/lowercasing_test/src/grouping_test/hello-world-lib/hello-world.cpp
new file mode 100644
index 00000000000..d280665ae7d
--- /dev/null
+++ b/lowercasing_test/src/grouping_test/hello-world-lib/hello-world.cpp
@@ -0,0 +1,9 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "hello-world.h"
+#include <stdio.h>
+
+void
+HelloWorld::print()
+{
+ fprintf(stdout, "C++/lib/Hello World\n");
+}
diff --git a/lowercasing_test/src/grouping_test/hello-world-lib/hello-world.h b/lowercasing_test/src/grouping_test/hello-world-lib/hello-world.h
new file mode 100644
index 00000000000..4bca4064da0
--- /dev/null
+++ b/lowercasing_test/src/grouping_test/hello-world-lib/hello-world.h
@@ -0,0 +1,9 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#pragma once
+
+class HelloWorld
+{
+public:
+ static void print();
+};
+
diff --git a/lowercasing_test/src/grouping_test/hello-world/.gitignore b/lowercasing_test/src/grouping_test/hello-world/.gitignore
new file mode 100644
index 00000000000..49082b83c4d
--- /dev/null
+++ b/lowercasing_test/src/grouping_test/hello-world/.gitignore
@@ -0,0 +1,4 @@
+.depend
+Makefile
+hello-world
+lowercasing_test_hello-world_app
diff --git a/lowercasing_test/src/grouping_test/hello-world/CMakeLists.txt b/lowercasing_test/src/grouping_test/hello-world/CMakeLists.txt
new file mode 100644
index 00000000000..2d6940ef4d8
--- /dev/null
+++ b/lowercasing_test/src/grouping_test/hello-world/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(lowercasing_test_hello-world_app
+ SOURCES
+ hello-world.cpp
+ INSTALL bin
+ DEPENDS
+ lowercasing_test_hello-world-lib
+)
diff --git a/lowercasing_test/src/grouping_test/hello-world/hello-world.cpp b/lowercasing_test/src/grouping_test/hello-world/hello-world.cpp
new file mode 100644
index 00000000000..42504323bbe
--- /dev/null
+++ b/lowercasing_test/src/grouping_test/hello-world/hello-world.cpp
@@ -0,0 +1,24 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/fastos/fastos.h>
+#include <grouping_test/hello-world-lib/hello-world.h>
+
+class App : public FastOS_Application
+{
+public:
+ int Main();
+};
+
+int
+App::Main()
+{
+ HelloWorld::print();
+ fprintf(stdout, "C++/app/Hello World\n");
+ return 0;
+}
+
+int
+main(int argc, char **argv)
+{
+ App myapp;
+ return myapp.Entry(argc, argv);
+}
diff --git a/lowercasing_test/src/java/.gitignore b/lowercasing_test/src/java/.gitignore
new file mode 100644
index 00000000000..5dec1497a4f
--- /dev/null
+++ b/lowercasing_test/src/java/.gitignore
@@ -0,0 +1,3 @@
+build.inc
+classes
+lowercasing_test.jar
diff --git a/lowercasing_test/src/java/CMakeLists.txt b/lowercasing_test/src/java/CMakeLists.txt
new file mode 100644
index 00000000000..5ef6b6b1e92
--- /dev/null
+++ b/lowercasing_test/src/java/CMakeLists.txt
@@ -0,0 +1,5 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+add_custom_target(lowercasing_test_java ALL
+ ant -q -buildfile ${CMAKE_CURRENT_SOURCE_DIR}/build.xml >>/dev/null
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/build.xml ${CMAKE_CURRENT_SOURCE_DIR}/HelloWorld.java
+)
diff --git a/lowercasing_test/src/java/HelloWorld.java b/lowercasing_test/src/java/HelloWorld.java
new file mode 100644
index 00000000000..37d7bf11af7
--- /dev/null
+++ b/lowercasing_test/src/java/HelloWorld.java
@@ -0,0 +1,8 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+public class HelloWorld
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Java/jar/HelloWorld");
+ }
+}
diff --git a/lowercasing_test/src/java/build.xml b/lowercasing_test/src/java/build.xml
new file mode 100644
index 00000000000..9e70af511f4
--- /dev/null
+++ b/lowercasing_test/src/java/build.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<project basedir="." default="all" name="lowercasing_test">
+ <!-- Written to assume that classpath is rooted in the current directory. -->
+ <!-- So this should be OK if you make this script in the root of a filesystem. -->
+ <!-- If not, just change src.dir to be the root of your sources' package tree -->
+ <!-- and use e.g. View over a Filesystem to mount that subdirectory with all capabilities. -->
+ <!-- The idea is that both Ant and NetBeans have to know what the package root is -->
+ <!-- for the classes in your application. -->
+
+ <!-- Don't worry if you don't know the Ant syntax completely or need help on some tasks! -->
+ <!-- The standard Ant documentation can be downloaded from AutoUpdate and -->
+ <!-- and then you can access the Ant manual in the online help. -->
+
+ <property file="build.inc" />
+
+ <target name="init">
+ <property location="classes" name="classes.dir"/>
+ <property location="." name="src.dir"/>
+ <property location="doc/api" name="javadoc.dir"/>
+ <property name="project.name" value="${ant.project.name}"/>
+ <property location="${project.name}.jar" name="jar"/>
+ </target>
+
+ <target depends="init" name="compile">
+ <!-- Both srcdir and destdir should be package roots. -->
+ <mkdir dir="${classes.dir}"/>
+ <javac debug="true" deprecation="true" destdir="${classes.dir}" srcdir="${src.dir}" includeantruntime="false">
+ <classpath>
+ </classpath>
+ <!-- To add something to the classpath: -->
+ <!-- <classpath><pathelement location="${mylib}"/></classpath> -->
+ <!-- To exclude some files: -->
+ <!-- <exclude name="com/foo/SomeFile.java"/><exclude name="com/foo/somepackage/"/> -->
+ </javac>
+ </target>
+
+ <target depends="init,compile" name="jar">
+ <!-- To make a standalone app, insert into <jar>: -->
+ <!-- <manifest><attribute name="Main-Class" value="com.foo.Main"/></manifest> -->
+ <jar basedir="${classes.dir}" compress="true" jarfile="${jar}"/>
+ </target>
+
+ <target depends="init,jar" description="Build everything." name="all"/>
+
+ <target depends="init" description="Javadoc for my API." name="javadoc">
+ <mkdir dir="${javadoc.dir}"/>
+ <javadoc destdir="${javadoc.dir}" packagenames="*">
+ <sourcepath>
+ <pathelement location="${src.dir}"/>
+ </sourcepath>
+ </javadoc>
+ </target>
+
+ <target depends="init" description="Clean all build products." name="clean">
+ <delete dir="${classes.dir}"/>
+ <delete dir="${javadoc.dir}"/>
+ <delete file="${jar}"/>
+ </target>
+
+</project>
diff --git a/lowercasing_test/src/testlist.txt b/lowercasing_test/src/testlist.txt
new file mode 100644
index 00000000000..e5735a07456
--- /dev/null
+++ b/lowercasing_test/src/testlist.txt
@@ -0,0 +1,2 @@
+tests/hello-world
+tests/lowercasing
diff --git a/lowercasing_test/src/tests/create-test.sh b/lowercasing_test/src/tests/create-test.sh
new file mode 100755
index 00000000000..feca94c7de2
--- /dev/null
+++ b/lowercasing_test/src/tests/create-test.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+gen_ignore_file() {
+ echo "generating '$1' ..."
+ echo ".depend" > $1
+ echo "Makefile" >> $1
+ echo "${test}_test" >> $1
+}
+
+gen_project_file() {
+ echo "generating '$1' ..."
+ echo "APPLICATION ${test}_test" > $1
+ echo "OBJS $test" >> $1
+ echo "EXTERNALLIBS searchlib" >> $1
+ echo "EXTERNALLIBS vespalib" >> $1
+ echo "EXTERNALLIBS vespalog" >> $1
+ echo "" >> $1
+ echo "CUSTOMMAKE" >> $1
+ echo "test: depend ${test}_test" >> $1
+ echo -e "\t@./${test}_test" >> $1
+}
+
+gen_source() {
+ echo "generating '$1' ..."
+ echo "#include <vespa/log/log.h>" > $1
+ echo "LOG_SETUP(\"${test}_test\");" >> $1
+ echo "#include <vespa/fastos/fastos.h>" >> $1
+ echo "#include <vespa/vespalib/testkit/testapp.h>" >> $1
+ echo "" >> $1
+ echo "" >> $1
+ echo "TEST_SETUP(Test);" >> $1
+ echo "" >> $1
+ echo "int" >> $1
+ echo "Test::Main()" >> $1
+ echo "{" >> $1
+ echo " TEST_INIT(\"${test}_test\");" >> $1
+ echo " TEST_DONE();" >> $1
+ echo "}" >> $1
+}
+
+gen_desc() {
+ echo "generating '$1' ..."
+ echo "$test test. Take a look at $test.cpp for details." > $1
+}
+
+gen_file_list() {
+ echo "generating '$1' ..."
+ echo "$test.cpp" > $1
+}
+
+if [ $# -ne 1 ]; then
+ echo "usage: $0 <name>"
+ echo " name: name of the test to create"
+ exit 1
+fi
+
+test=$1
+if [ -e $test ]; then
+ echo "$test already present, don't want to mess it up..."
+ exit 1
+fi
+
+echo "creating directory '$test' ..."
+mkdir -p $test || exit 1
+cd $test || exit 1
+test=`basename $test`
+
+gen_ignore_file .cvsignore
+gen_project_file fastos.project
+gen_source $test.cpp
+gen_desc DESC
+gen_file_list FILES
diff --git a/lowercasing_test/src/tests/hello-world/.gitignore b/lowercasing_test/src/tests/hello-world/.gitignore
new file mode 100644
index 00000000000..40a57ff7d39
--- /dev/null
+++ b/lowercasing_test/src/tests/hello-world/.gitignore
@@ -0,0 +1,6 @@
+.depend
+HelloWorldLocal.class
+Makefile
+hello-world-local
+out.txt
+lowercasing_test_hello-world-local_app
diff --git a/lowercasing_test/src/tests/hello-world/CMakeLists.txt b/lowercasing_test/src/tests/hello-world/CMakeLists.txt
new file mode 100644
index 00000000000..ec4d0c68532
--- /dev/null
+++ b/lowercasing_test/src/tests/hello-world/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(lowercasing_test_hello-world-local_app
+ SOURCES
+ hello-world-local.cpp
+ DEPENDS
+ lowercasing_test_hello-world-lib
+)
+vespa_add_test(NAME lowercasing_test_hello-world-local_app NO_VALGRIND COMMAND sh hello-world_test.sh)
diff --git a/lowercasing_test/src/tests/hello-world/DESC b/lowercasing_test/src/tests/hello-world/DESC
new file mode 100644
index 00000000000..47ab72663ef
--- /dev/null
+++ b/lowercasing_test/src/tests/hello-world/DESC
@@ -0,0 +1 @@
+Initial test to verify the integrity of this testing module.
diff --git a/lowercasing_test/src/tests/hello-world/FILES b/lowercasing_test/src/tests/hello-world/FILES
new file mode 100644
index 00000000000..beec05c0632
--- /dev/null
+++ b/lowercasing_test/src/tests/hello-world/FILES
@@ -0,0 +1,5 @@
+hello-world-local.cpp
+HelloWorldLocal.java
+dotest.sh
+out.txt
+ref.txt
diff --git a/lowercasing_test/src/tests/hello-world/HelloWorldLocal.java b/lowercasing_test/src/tests/hello-world/HelloWorldLocal.java
new file mode 100644
index 00000000000..a0928a58c99
--- /dev/null
+++ b/lowercasing_test/src/tests/hello-world/HelloWorldLocal.java
@@ -0,0 +1,8 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+public class HelloWorldLocal
+{
+ public static void main(String[] args)
+ {
+ System.out.println("Java/local/Hello World");
+ }
+}
diff --git a/lowercasing_test/src/tests/hello-world/dotest.sh b/lowercasing_test/src/tests/hello-world/dotest.sh
new file mode 100755
index 00000000000..8a183b81148
--- /dev/null
+++ b/lowercasing_test/src/tests/hello-world/dotest.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+. ../../binref/env.sh
+
+./lowercasing_test_hello-world-local_app > out.txt
+$HELLO_WORLD_APP >> out.txt
+$BINREF/runjava HelloWorldLocal >> out.txt
+$BINREF/runjava HelloWorld >> out.txt
+
+if diff -u out.txt ref.txt; then
+ exit 0
+else
+ exit 1
+fi
diff --git a/lowercasing_test/src/tests/hello-world/hello-world-local.cpp b/lowercasing_test/src/tests/hello-world/hello-world-local.cpp
new file mode 100644
index 00000000000..f9f42cf6b59
--- /dev/null
+++ b/lowercasing_test/src/tests/hello-world/hello-world-local.cpp
@@ -0,0 +1,24 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/fastos/fastos.h>
+#include <grouping_test/hello-world-lib/hello-world.h>
+
+class App : public FastOS_Application
+{
+public:
+ int Main();
+};
+
+int
+App::Main()
+{
+ HelloWorld::print();
+ fprintf(stdout, "C++/local/Hello World\n");
+ return 0;
+}
+
+int
+main(int argc, char **argv)
+{
+ App myapp;
+ return myapp.Entry(argc, argv);
+}
diff --git a/lowercasing_test/src/tests/hello-world/hello-world_test.sh b/lowercasing_test/src/tests/hello-world/hello-world_test.sh
new file mode 100755
index 00000000000..8895f89feb3
--- /dev/null
+++ b/lowercasing_test/src/tests/hello-world/hello-world_test.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+. ../../binref/env.sh
+$BINREF/compilejava HelloWorldLocal.java
+sh dotest.sh
diff --git a/lowercasing_test/src/tests/hello-world/ref.txt b/lowercasing_test/src/tests/hello-world/ref.txt
new file mode 100644
index 00000000000..5f2f17f3e52
--- /dev/null
+++ b/lowercasing_test/src/tests/hello-world/ref.txt
@@ -0,0 +1,6 @@
+C++/lib/Hello World
+C++/local/Hello World
+C++/lib/Hello World
+C++/app/Hello World
+Java/local/Hello World
+Java/jar/HelloWorld
diff --git a/lowercasing_test/src/tests/lowercasing/.gitignore b/lowercasing_test/src/tests/lowercasing/.gitignore
new file mode 100644
index 00000000000..34920656252
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/.gitignore
@@ -0,0 +1,10 @@
+/.depend
+/CasingVariants.class
+/Makefile
+/casingvariants_fastlib
+/casingvariants_vespalib
+/out.txt
+/out.fastlib.txt
+/out.vespalib.txt
+lowercasing_test_casingvariants_fastlib_app
+lowercasing_test_casingvariants_vespalib_app
diff --git a/lowercasing_test/src/tests/lowercasing/CMakeLists.txt b/lowercasing_test/src/tests/lowercasing/CMakeLists.txt
new file mode 100644
index 00000000000..02bc9f3db52
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/CMakeLists.txt
@@ -0,0 +1,12 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(lowercasing_test_casingvariants_fastlib_app
+ SOURCES
+ casingvariants_fastlib.cpp
+ DEPENDS
+)
+vespa_add_test(NAME lowercasing_test_lowrcasing NO_VALGRIND COMMAND sh lowercasing_test.sh)
+vespa_add_executable(lowercasing_test_casingvariants_vespalib_app
+ SOURCES
+ casingvariants_vespalib.cpp
+ DEPENDS
+)
diff --git a/lowercasing_test/src/tests/lowercasing/CasingVariants.java b/lowercasing_test/src/tests/lowercasing/CasingVariants.java
new file mode 100644
index 00000000000..aa1bf8fcf4d
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/CasingVariants.java
@@ -0,0 +1,34 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+import static com.yahoo.language.LinguisticsCase.toLowerCase;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import com.yahoo.text.Utf8;
+
+public class CasingVariants {
+
+ public static void main(String[] args) throws FileNotFoundException, IOException {
+ int read = 0;
+ char[] buffer = new char[5000];
+ String raw;
+ File f = new File("./letters");
+ StringBuilder s = new StringBuilder();
+ InputStream in = new FileInputStream(f);
+
+ Reader r = new InputStreamReader(in, Utf8.getCharset());
+ while (read != -1) {
+ read = r.read(buffer);
+ if (read > 0) {
+ s.append(buffer, 0, read);
+ }
+ }
+ raw = s.toString();
+ System.out.write(Utf8.toBytes(toLowerCase(raw)));
+ }
+}
diff --git a/lowercasing_test/src/tests/lowercasing/DESC b/lowercasing_test/src/tests/lowercasing/DESC
new file mode 100644
index 00000000000..703e154b7fa
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/DESC
@@ -0,0 +1,7 @@
+Check lowercasing is the same in Java and C++.
+
+Currently based on data from
+http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt
+
+The reason for using an older standard is the Character class in Java 6 uses the
+same data.
diff --git a/lowercasing_test/src/tests/lowercasing/FILES b/lowercasing_test/src/tests/lowercasing/FILES
new file mode 100644
index 00000000000..e93d88e772e
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/FILES
@@ -0,0 +1,6 @@
+CasingVariants.java
+fetchletters.py
+letters
+out.txt
+ref.txt
+dotest.sh
diff --git a/lowercasing_test/src/tests/lowercasing/casingvariants_fastlib.cpp b/lowercasing_test/src/tests/lowercasing/casingvariants_fastlib.cpp
new file mode 100644
index 00000000000..d7478c4755a
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/casingvariants_fastlib.cpp
@@ -0,0 +1,41 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/fastos/fastos.h>
+#include <vespa/fastlib/text/normwordfolder.h>
+#include <fstream>
+#include <iostream>
+
+ucs4_t
+getUCS4Char(const char *src)
+{
+ return Fast_UnicodeUtil::GetUTF8Char(src);
+}
+
+int
+main(int argc, char ** argv)
+{
+ assert(argc == 3);
+ (void) argc;
+ std::ifstream input(argv[1]);
+ std::ifstream ref(argv[2]);
+ Fast_NormalizeWordFolder wordFolder;
+ char inputBuf[128];
+ char refBuf[128];
+ char lowerBuf[128];
+ while (input.good()) {
+ input.getline(inputBuf, 128);
+ ref.getline(refBuf, 128);
+ ucs4_t inputChar = getUCS4Char(inputBuf);
+ ucs4_t refChar = getUCS4Char(refBuf);
+ ucs4_t lowerChar = wordFolder.ToFold(inputChar);
+ Fast_UnicodeUtil::utf8ncopy(lowerBuf, &lowerChar, 128, 1);
+ if (refChar != lowerChar) {
+ printf("input(%s,%u,0x%X), lower(%s,%u,0x%X), ref(%s,%u,0x%X) \n",
+ inputBuf, inputChar, inputChar,
+ lowerBuf, lowerChar, lowerChar,
+ refBuf, refChar, refChar);
+ }
+ }
+ input.close();
+ return 0;
+}
+
diff --git a/lowercasing_test/src/tests/lowercasing/casingvariants_vespalib.cpp b/lowercasing_test/src/tests/lowercasing/casingvariants_vespalib.cpp
new file mode 100644
index 00000000000..d6df9686e86
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/casingvariants_vespalib.cpp
@@ -0,0 +1,53 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/fastos/fastos.h>
+#include <vespa/vespalib/text/lowercase.h>
+#include <vespa/vespalib/text/utf8.h>
+#include <fstream>
+#include <iostream>
+
+using vespalib::LowerCase;
+using vespalib::Utf8ReaderForZTS;
+using vespalib::Utf8Writer;
+
+uint32_t
+getUCS4Char(const char *src)
+{
+ Utf8ReaderForZTS reader(src);
+ return reader.getChar();
+}
+
+vespalib::string
+getUTF8String(uint32_t ucs4Char)
+{
+ vespalib::string target;
+ Utf8Writer writer(target);
+ writer.putChar(ucs4Char);
+ return target;
+}
+
+int
+main(int argc, char ** argv)
+{
+ assert(argc == 3);
+ (void) argc;
+ std::ifstream input(argv[1]);
+ std::ifstream ref(argv[2]);
+ char inputBuf[128];
+ char refBuf[128];
+ while (input.good()) {
+ input.getline(inputBuf, 128);
+ ref.getline(refBuf, 128);
+ uint32_t inputChar = getUCS4Char(inputBuf);
+ uint32_t refChar = getUCS4Char(refBuf);
+ uint32_t lowerChar = LowerCase::convert(inputChar);
+ if (refChar != lowerChar) {
+ printf("input(%s,%u,0x%X), lower(%s,%u,0x%X), ref(%s,%u,0x%X) \n",
+ inputBuf, inputChar, inputChar,
+ getUTF8String(lowerChar).c_str(), lowerChar, lowerChar,
+ refBuf, refChar, refChar);
+ }
+ }
+ input.close();
+ return 0;
+}
+
diff --git a/lowercasing_test/src/tests/lowercasing/dotest.sh b/lowercasing_test/src/tests/lowercasing/dotest.sh
new file mode 100755
index 00000000000..73460c470be
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/dotest.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+. ../../binref/env.sh
+
+ver="java8u20"
+
+$BINREF/runjava CasingVariants > out.txt
+./lowercasing_test_casingvariants_fastlib_app ./letters ref.txt.$ver > out.fastlib.txt
+./lowercasing_test_casingvariants_vespalib_app ./letters ref.txt.$ver > out.vespalib.txt
+
+echo "Verify Java"
+if ! diff -u out.txt ref.txt.$ver; then
+ exit 1
+fi
+
+echo "Verify fastlib"
+if ! diff -u out.fastlib.txt ref.fastlib.txt.$ver; then
+ exit 1
+fi
+
+echo "Verify vespalib"
+if ! diff -u out.vespalib.txt ref.vespalib.txt.$ver; then
+ exit 1
+fi
diff --git a/lowercasing_test/src/tests/lowercasing/fetchletters.py b/lowercasing_test/src/tests/lowercasing/fetchletters.py
new file mode 100644
index 00000000000..350dfa050da
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/fetchletters.py
@@ -0,0 +1,28 @@
+#! /usr/bin/env python
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# This program reads a Unicode database and emits all letters in lower
+# and upper case.
+
+# Refer to http://www.unicode.org/ucd/ to download new files.
+
+import sys
+
+def add_character(unicodespec, characterstore):
+ characterstora
+
+def main(raw, out):
+ # Fetch upper and lower case characters in Unicode
+ characters = filter(lambda x: x[2] == 'Lu' or x[2] == 'Ll', raw)
+ image = [unichr(int(c[0], 16)) for c in characters]
+ output = u"\n".join(image)
+ out.write(output.encode("UTF-8"))
+ out.write(u"\n".encode("UTF-8"))
+
+if __name__ == '__main__':
+ try:
+ raw = [x.split(";") for x in open("./UnicodeData.txt", "r").readlines()]
+ except:
+ sys.stderr.write("Problems reading ./UnicodeData.txt.\n")
+ sys.exit(1)
+ main(raw, sys.stdout)
diff --git a/lowercasing_test/src/tests/lowercasing/letters b/lowercasing_test/src/tests/lowercasing/letters
new file mode 100644
index 00000000000..7b67bc7d80e
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/letters
@@ -0,0 +1,2605 @@
+A
+B
+C
+D
+E
+F
+G
+H
+I
+J
+K
+L
+M
+N
+O
+P
+Q
+R
+S
+T
+U
+V
+W
+X
+Y
+Z
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+ÿ
+Ŀ
+ſ
+ƿ
+ǿ
+ɿ
+ο
+п
+ѿ
+ҿ
+Կ
+տ
+Ⴀ
+Ⴁ
+Ⴂ
+Ⴃ
+Ⴄ
+Ⴅ
+Ⴆ
+Ⴇ
+Ⴈ
+Ⴉ
+Ⴊ
+Ⴋ
+Ⴌ
+Ⴍ
+Ⴎ
+Ⴏ
+Ⴐ
+Ⴑ
+Ⴒ
+Ⴓ
+Ⴔ
+Ⴕ
+Ⴖ
+Ⴗ
+Ⴘ
+Ⴙ
+Ⴚ
+Ⴛ
+Ⴜ
+Ⴝ
+Ⴞ
+Ⴟ
+Ⴠ
+Ⴡ
+Ⴢ
+Ⴣ
+Ⴤ
+Ⴥ
+ᴀ
+ᴁ
+ᴂ
+ᴃ
+ᴄ
+ᴅ
+ᴆ
+ᴇ
+ᴈ
+ᴉ
+ᴊ
+ᴋ
+ᴌ
+ᴍ
+ᴎ
+ᴏ
+ᴐ
+ᴑ
+ᴒ
+ᴓ
+ᴔ
+ᴕ
+ᴖ
+ᴗ
+ᴘ
+ᴙ
+ᴚ
+ᴛ
+ᴜ
+ᴝ
+ᴞ
+ᴟ
+ᴠ
+ᴡ
+ᴢ
+ᴣ
+ᴤ
+ᴥ
+ᴦ
+ᴧ
+ᴨ
+ᴩ
+ᴪ
+ᴫ
+ᵢ
+ᵣ
+ᵤ
+ᵥ
+ᵦ
+ᵧ
+ᵨ
+ᵩ
+ᵪ
+ᵫ
+Ḁ
+ḁ
+Ḃ
+ḃ
+Ḅ
+ḅ
+Ḇ
+ḇ
+Ḉ
+ḉ
+Ḋ
+ḋ
+Ḍ
+ḍ
+Ḏ
+ḏ
+Ḑ
+ḑ
+Ḓ
+ḓ
+Ḕ
+ḕ
+Ḗ
+ḗ
+Ḙ
+ḙ
+Ḛ
+ḛ
+Ḝ
+ḝ
+Ḟ
+ḟ
+Ḡ
+ḡ
+Ḣ
+ḣ
+Ḥ
+ḥ
+Ḧ
+ḧ
+Ḩ
+ḩ
+Ḫ
+ḫ
+Ḭ
+ḭ
+Ḯ
+ḯ
+Ḱ
+ḱ
+Ḳ
+ḳ
+Ḵ
+ḵ
+Ḷ
+ḷ
+Ḹ
+ḹ
+Ḻ
+ḻ
+Ḽ
+ḽ
+Ḿ
+ḿ
+Ṁ
+ṁ
+Ṃ
+ṃ
+Ṅ
+ṅ
+Ṇ
+ṇ
+Ṉ
+ṉ
+Ṋ
+ṋ
+Ṍ
+ṍ
+Ṏ
+ṏ
+Ṑ
+ṑ
+Ṓ
+ṓ
+Ṕ
+ṕ
+Ṗ
+ṗ
+Ṙ
+ṙ
+Ṛ
+ṛ
+Ṝ
+ṝ
+Ṟ
+ṟ
+Ṡ
+ṡ
+Ṣ
+ṣ
+Ṥ
+ṥ
+Ṧ
+ṧ
+Ṩ
+ṩ
+Ṫ
+ṫ
+Ṭ
+ṭ
+Ṯ
+ṯ
+Ṱ
+ṱ
+Ṳ
+ṳ
+Ṵ
+ṵ
+Ṷ
+ṷ
+Ṹ
+ṹ
+Ṻ
+ṻ
+Ṽ
+ṽ
+Ṿ
+ṿ
+Ẁ
+ẁ
+Ẃ
+ẃ
+Ẅ
+ẅ
+Ẇ
+ẇ
+Ẉ
+ẉ
+Ẋ
+ẋ
+Ẍ
+ẍ
+Ẏ
+ẏ
+Ẑ
+ẑ
+Ẓ
+ẓ
+Ẕ
+ẕ
+ẖ
+ẗ
+ẘ
+ẙ
+ẚ
+ẛ
+Ạ
+ạ
+Ả
+ả
+Ấ
+ấ
+Ầ
+ầ
+Ẩ
+ẩ
+Ẫ
+ẫ
+Ậ
+ậ
+Ắ
+ắ
+Ằ
+ằ
+Ẳ
+ẳ
+Ẵ
+ẵ
+Ặ
+ặ
+Ẹ
+ẹ
+Ẻ
+ẻ
+Ẽ
+ẽ
+Ế
+ế
+Ề
+ề
+Ể
+ể
+Ễ
+ễ
+Ệ
+ệ
+Ỉ
+ỉ
+Ị
+ị
+Ọ
+ọ
+Ỏ
+ỏ
+Ố
+ố
+Ồ
+ồ
+Ổ
+ổ
+Ỗ
+ỗ
+Ộ
+ộ
+Ớ
+ớ
+Ờ
+ờ
+Ở
+ở
+Ỡ
+ỡ
+Ợ
+ợ
+Ụ
+ụ
+Ủ
+ủ
+Ứ
+ứ
+Ừ
+ừ
+Ử
+ử
+Ữ
+ữ
+Ự
+ự
+Ỳ
+ỳ
+Ỵ
+ỵ
+Ỷ
+ỷ
+Ỹ
+ỹ
+ἀ
+ἁ
+ἂ
+ἃ
+ἄ
+ἅ
+ἆ
+ἇ
+Ἀ
+Ἁ
+Ἂ
+Ἃ
+Ἄ
+Ἅ
+Ἆ
+Ἇ
+ἐ
+ἑ
+ἒ
+ἓ
+ἔ
+ἕ
+Ἐ
+Ἑ
+Ἒ
+Ἓ
+Ἔ
+Ἕ
+ἠ
+ἡ
+ἢ
+ἣ
+ἤ
+ἥ
+ἦ
+ἧ
+Ἠ
+Ἡ
+Ἢ
+Ἣ
+Ἤ
+Ἥ
+Ἦ
+Ἧ
+ἰ
+ἱ
+ἲ
+ἳ
+ἴ
+ἵ
+ἶ
+ἷ
+Ἰ
+Ἱ
+Ἲ
+Ἳ
+Ἴ
+Ἵ
+Ἶ
+Ἷ
+ὀ
+ὁ
+ὂ
+ὃ
+ὄ
+ὅ
+Ὀ
+Ὁ
+Ὂ
+Ὃ
+Ὄ
+Ὅ
+ὐ
+ὑ
+ὒ
+ὓ
+ὔ
+ὕ
+ὖ
+ὗ
+Ὑ
+Ὓ
+Ὕ
+Ὗ
+ὠ
+ὡ
+ὢ
+ὣ
+ὤ
+ὥ
+ὦ
+ὧ
+Ὠ
+Ὡ
+Ὢ
+Ὣ
+Ὤ
+Ὥ
+Ὦ
+Ὧ
+ὰ
+ά
+ὲ
+έ
+ὴ
+ή
+ὶ
+ί
+ὸ
+ό
+ὺ
+ύ
+ὼ
+ώ
+ᾀ
+ᾁ
+ᾂ
+ᾃ
+ᾄ
+ᾅ
+ᾆ
+ᾇ
+ᾐ
+ᾑ
+ᾒ
+ᾓ
+ᾔ
+ᾕ
+ᾖ
+ᾗ
+ᾠ
+ᾡ
+ᾢ
+ᾣ
+ᾤ
+ᾥ
+ᾦ
+ᾧ
+ᾰ
+ᾱ
+ᾲ
+ᾳ
+ᾴ
+ᾶ
+ᾷ
+Ᾰ
+Ᾱ
+Ὰ
+Ά
+ι
+ῂ
+ῃ
+ῄ
+ῆ
+ῇ
+Ὲ
+Έ
+Ὴ
+Ή
+ῐ
+ῑ
+ῒ
+ΐ
+ῖ
+ῗ
+Ῐ
+Ῑ
+Ὶ
+Ί
+ῠ
+ῡ
+ῢ
+ΰ
+ῤ
+ῥ
+ῦ
+ῧ
+Ῠ
+Ῡ
+Ὺ
+Ύ
+Ῥ
+ῲ
+ῳ
+ῴ
+ῶ
+ῷ
+Ὸ
+Ό
+Ὼ
+Ώ
+ⁱ
+ⁿ
+ℂ
+ℇ
+ℊ
+ℋ
+ℌ
+ℍ
+ℎ
+ℏ
+ℐ
+ℑ
+ℒ
+ℓ
+ℕ
+ℙ
+ℚ
+ℛ
+ℜ
+ℝ
+ℤ
+Ω
+ℨ
+K
+Å
+ℬ
+ℭ
+ℯ
+ℰ
+ℱ
+ℳ
+ℴ
+ℹ
+ℽ
+ℾ
+ℿ
+ⅅ
+ⅆ
+ⅇ
+ⅈ
+ⅉ
+ff
+fi
+fl
+ffi
+ffl
+ſt
+st
+ﬓ
+ﬔ
+ﬕ
+ﬖ
+ﬗ
+A
+B
+C
+D
+E
+F
+G
+H
+I
+J
+K
+L
+M
+N
+O
+P
+Q
+R
+S
+T
+U
+V
+W
+X
+Y
+Z
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+𐐀
+𐐁
+𐐂
+𐐃
+𐐄
+𐐅
+𐐆
+𐐇
+𐐈
+𐐉
+𐐊
+𐐋
+𐐌
+𐐍
+𐐎
+𐐏
+𐐐
+𐐑
+𐐒
+𐐓
+𐐔
+𐐕
+𐐖
+𐐗
+𐐘
+𐐙
+𐐚
+𐐛
+𐐜
+𐐝
+𐐞
+𐐟
+𐐠
+𐐡
+𐐢
+𐐣
+𐐤
+𐐥
+𐐦
+𐐧
+𐐨
+𐐩
+𐐪
+𐐫
+𐐬
+𐐭
+𐐮
+𐐯
+𐐰
+𐐱
+𐐲
+𐐳
+𐐴
+𐐵
+𐐶
+𐐷
+𐐸
+𐐹
+𐐺
+𐐻
+𐐼
+𐐽
+𐐾
+𐐿
+𐑀
+𐑁
+𐑂
+𐑃
+𐑄
+𐑅
+𐑆
+𐑇
+𐑈
+𐑉
+𐑊
+𐑋
+𐑌
+𐑍
+𐑎
+𐑏
+𝐀
+𝐁
+𝐂
+𝐃
+𝐄
+𝐅
+𝐆
+𝐇
+𝐈
+𝐉
+𝐊
+𝐋
+𝐌
+𝐍
+𝐎
+𝐏
+𝐐
+𝐑
+𝐒
+𝐓
+𝐔
+𝐕
+𝐖
+𝐗
+𝐘
+𝐙
+𝐚
+𝐛
+𝐜
+𝐝
+𝐞
+𝐟
+𝐠
+𝐡
+𝐢
+𝐣
+𝐤
+𝐥
+𝐦
+𝐧
+𝐨
+𝐩
+𝐪
+𝐫
+𝐬
+𝐭
+𝐮
+𝐯
+𝐰
+𝐱
+𝐲
+𝐳
+𝐴
+𝐵
+𝐶
+𝐷
+𝐸
+𝐹
+𝐺
+𝐻
+𝐼
+𝐽
+𝐾
+𝐿
+𝑀
+𝑁
+𝑂
+𝑃
+𝑄
+𝑅
+𝑆
+𝑇
+𝑈
+𝑉
+𝑊
+𝑋
+𝑌
+𝑍
+𝑎
+𝑏
+𝑐
+𝑑
+𝑒
+𝑓
+𝑔
+𝑖
+𝑗
+𝑘
+𝑙
+𝑚
+𝑛
+𝑜
+𝑝
+𝑞
+𝑟
+𝑠
+𝑡
+𝑢
+𝑣
+𝑤
+𝑥
+𝑦
+𝑧
+𝑨
+𝑩
+𝑪
+𝑫
+𝑬
+𝑭
+𝑮
+𝑯
+𝑰
+𝑱
+𝑲
+𝑳
+𝑴
+𝑵
+𝑶
+𝑷
+𝑸
+𝑹
+𝑺
+𝑻
+𝑼
+𝑽
+𝑾
+𝑿
+𝒀
+𝒁
+𝒂
+𝒃
+𝒄
+𝒅
+𝒆
+𝒇
+𝒈
+𝒉
+𝒊
+𝒋
+𝒌
+𝒍
+𝒎
+𝒏
+𝒐
+𝒑
+𝒒
+𝒓
+𝒔
+𝒕
+𝒖
+𝒗
+𝒘
+𝒙
+𝒚
+𝒛
+𝒜
+𝒞
+𝒟
+𝒢
+𝒥
+𝒦
+𝒩
+𝒪
+𝒫
+𝒬
+𝒮
+𝒯
+𝒰
+𝒱
+𝒲
+𝒳
+𝒴
+𝒵
+𝒶
+𝒷
+𝒸
+𝒹
+𝒻
+𝒽
+𝒾
+𝒿
+𝓀
+𝓁
+𝓂
+𝓃
+𝓅
+𝓆
+𝓇
+𝓈
+𝓉
+𝓊
+𝓋
+𝓌
+𝓍
+𝓎
+𝓏
+𝓐
+𝓑
+𝓒
+𝓓
+𝓔
+𝓕
+𝓖
+𝓗
+𝓘
+𝓙
+𝓚
+𝓛
+𝓜
+𝓝
+𝓞
+𝓟
+𝓠
+𝓡
+𝓢
+𝓣
+𝓤
+𝓥
+𝓦
+𝓧
+𝓨
+𝓩
+𝓪
+𝓫
+𝓬
+𝓭
+𝓮
+𝓯
+𝓰
+𝓱
+𝓲
+𝓳
+𝓴
+𝓵
+𝓶
+𝓷
+𝓸
+𝓹
+𝓺
+𝓻
+𝓼
+𝓽
+𝓾
+𝓿
+𝔀
+𝔁
+𝔂
+𝔃
+𝔄
+𝔅
+𝔇
+𝔈
+𝔉
+𝔊
+𝔍
+𝔎
+𝔏
+𝔐
+𝔑
+𝔒
+𝔓
+𝔔
+𝔖
+𝔗
+𝔘
+𝔙
+𝔚
+𝔛
+𝔜
+𝔞
+𝔟
+𝔠
+𝔡
+𝔢
+𝔣
+𝔤
+𝔥
+𝔦
+𝔧
+𝔨
+𝔩
+𝔪
+𝔫
+𝔬
+𝔭
+𝔮
+𝔯
+𝔰
+𝔱
+𝔲
+𝔳
+𝔴
+𝔵
+𝔶
+𝔷
+𝔸
+𝔹
+𝔻
+𝔼
+𝔽
+𝔾
+𝕀
+𝕁
+𝕂
+𝕃
+𝕄
+𝕆
+𝕊
+𝕋
+𝕌
+𝕍
+𝕎
+𝕏
+𝕐
+𝕒
+𝕓
+𝕔
+𝕕
+𝕖
+𝕗
+𝕘
+𝕙
+𝕚
+𝕛
+𝕜
+𝕝
+𝕞
+𝕟
+𝕠
+𝕡
+𝕢
+𝕣
+𝕤
+𝕥
+𝕦
+𝕧
+𝕨
+𝕩
+𝕪
+𝕫
+𝕬
+𝕭
+𝕮
+𝕯
+𝕰
+𝕱
+𝕲
+𝕳
+𝕴
+𝕵
+𝕶
+𝕷
+𝕸
+𝕹
+𝕺
+𝕻
+𝕼
+𝕽
+𝕾
+𝕿
+𝖀
+𝖁
+𝖂
+𝖃
+𝖄
+𝖅
+𝖆
+𝖇
+𝖈
+𝖉
+𝖊
+𝖋
+𝖌
+𝖍
+𝖎
+𝖏
+𝖐
+𝖑
+𝖒
+𝖓
+𝖔
+𝖕
+𝖖
+𝖗
+𝖘
+𝖙
+𝖚
+𝖛
+𝖜
+𝖝
+𝖞
+𝖟
+𝖠
+𝖡
+𝖢
+𝖣
+𝖤
+𝖥
+𝖦
+𝖧
+𝖨
+𝖩
+𝖪
+𝖫
+𝖬
+𝖭
+𝖮
+𝖯
+𝖰
+𝖱
+𝖲
+𝖳
+𝖴
+𝖵
+𝖶
+𝖷
+𝖸
+𝖹
+𝖺
+𝖻
+𝖼
+𝖽
+𝖾
+𝖿
+𝗀
+𝗁
+𝗂
+𝗃
+𝗄
+𝗅
+𝗆
+𝗇
+𝗈
+𝗉
+𝗊
+𝗋
+𝗌
+𝗍
+𝗎
+𝗏
+𝗐
+𝗑
+𝗒
+𝗓
+𝗔
+𝗕
+𝗖
+𝗗
+𝗘
+𝗙
+𝗚
+𝗛
+𝗜
+𝗝
+𝗞
+𝗟
+𝗠
+𝗡
+𝗢
+𝗣
+𝗤
+𝗥
+𝗦
+𝗧
+𝗨
+𝗩
+𝗪
+𝗫
+𝗬
+𝗭
+𝗮
+𝗯
+𝗰
+𝗱
+𝗲
+𝗳
+𝗴
+𝗵
+𝗶
+𝗷
+𝗸
+𝗹
+𝗺
+𝗻
+𝗼
+𝗽
+𝗾
+𝗿
+𝘀
+𝘁
+𝘂
+𝘃
+𝘄
+𝘅
+𝘆
+𝘇
+𝘈
+𝘉
+𝘊
+𝘋
+𝘌
+𝘍
+𝘎
+𝘏
+𝘐
+𝘑
+𝘒
+𝘓
+𝘔
+𝘕
+𝘖
+𝘗
+𝘘
+𝘙
+𝘚
+𝘛
+𝘜
+𝘝
+𝘞
+𝘟
+𝘠
+𝘡
+𝘢
+𝘣
+𝘤
+𝘥
+𝘦
+𝘧
+𝘨
+𝘩
+𝘪
+𝘫
+𝘬
+𝘭
+𝘮
+𝘯
+𝘰
+𝘱
+𝘲
+𝘳
+𝘴
+𝘵
+𝘶
+𝘷
+𝘸
+𝘹
+𝘺
+𝘻
+𝘼
+𝘽
+𝘾
+𝘿
+𝙀
+𝙁
+𝙂
+𝙃
+𝙄
+𝙅
+𝙆
+𝙇
+𝙈
+𝙉
+𝙊
+𝙋
+𝙌
+𝙍
+𝙎
+𝙏
+𝙐
+𝙑
+𝙒
+𝙓
+𝙔
+𝙕
+𝙖
+𝙗
+𝙘
+𝙙
+𝙚
+𝙛
+𝙜
+𝙝
+𝙞
+𝙟
+𝙠
+𝙡
+𝙢
+𝙣
+𝙤
+𝙥
+𝙦
+𝙧
+𝙨
+𝙩
+𝙪
+𝙫
+𝙬
+𝙭
+𝙮
+𝙯
+𝙰
+𝙱
+𝙲
+𝙳
+𝙴
+𝙵
+𝙶
+𝙷
+𝙸
+𝙹
+𝙺
+𝙻
+𝙼
+𝙽
+𝙾
+𝙿
+𝚀
+𝚁
+𝚂
+𝚃
+𝚄
+𝚅
+𝚆
+𝚇
+𝚈
+𝚉
+𝚊
+𝚋
+𝚌
+𝚍
+𝚎
+𝚏
+𝚐
+𝚑
+𝚒
+𝚓
+𝚔
+𝚕
+𝚖
+𝚗
+𝚘
+𝚙
+𝚚
+𝚛
+𝚜
+𝚝
+𝚞
+𝚟
+𝚠
+𝚡
+𝚢
+𝚣
+𝚨
+𝚩
+𝚪
+𝚫
+𝚬
+𝚭
+𝚮
+𝚯
+𝚰
+𝚱
+𝚲
+𝚳
+𝚴
+𝚵
+𝚶
+𝚷
+𝚸
+𝚹
+𝚺
+𝚻
+𝚼
+𝚽
+𝚾
+𝚿
+𝛀
+𝛂
+𝛃
+𝛄
+𝛅
+𝛆
+𝛇
+𝛈
+𝛉
+𝛊
+𝛋
+𝛌
+𝛍
+𝛎
+𝛏
+𝛐
+𝛑
+𝛒
+𝛓
+𝛔
+𝛕
+𝛖
+𝛗
+𝛘
+𝛙
+𝛚
+𝛜
+𝛝
+𝛞
+𝛟
+𝛠
+𝛡
+𝛢
+𝛣
+𝛤
+𝛥
+𝛦
+𝛧
+𝛨
+𝛩
+𝛪
+𝛫
+𝛬
+𝛭
+𝛮
+𝛯
+𝛰
+𝛱
+𝛲
+𝛳
+𝛴
+𝛵
+𝛶
+𝛷
+𝛸
+𝛹
+𝛺
+𝛼
+𝛽
+𝛾
+𝛿
+𝜀
+𝜁
+𝜂
+𝜃
+𝜄
+𝜅
+𝜆
+𝜇
+𝜈
+𝜉
+𝜊
+𝜋
+𝜌
+𝜍
+𝜎
+𝜏
+𝜐
+𝜑
+𝜒
+𝜓
+𝜔
+𝜖
+𝜗
+𝜘
+𝜙
+𝜚
+𝜛
+𝜜
+𝜝
+𝜞
+𝜟
+𝜠
+𝜡
+𝜢
+𝜣
+𝜤
+𝜥
+𝜦
+𝜧
+𝜨
+𝜩
+𝜪
+𝜫
+𝜬
+𝜭
+𝜮
+𝜯
+𝜰
+𝜱
+𝜲
+𝜳
+𝜴
+𝜶
+𝜷
+𝜸
+𝜹
+𝜺
+𝜻
+𝜼
+𝜽
+𝜾
+𝜿
+𝝀
+𝝁
+𝝂
+𝝃
+𝝄
+𝝅
+𝝆
+𝝇
+𝝈
+𝝉
+𝝊
+𝝋
+𝝌
+𝝍
+𝝎
+𝝐
+𝝑
+𝝒
+𝝓
+𝝔
+𝝕
+𝝖
+𝝗
+𝝘
+𝝙
+𝝚
+𝝛
+𝝜
+𝝝
+𝝞
+𝝟
+𝝠
+𝝡
+𝝢
+𝝣
+𝝤
+𝝥
+𝝦
+𝝧
+𝝨
+𝝩
+𝝪
+𝝫
+𝝬
+𝝭
+𝝮
+𝝰
+𝝱
+𝝲
+𝝳
+𝝴
+𝝵
+𝝶
+𝝷
+𝝸
+𝝹
+𝝺
+𝝻
+𝝼
+𝝽
+𝝾
+𝝿
+𝞀
+𝞁
+𝞂
+𝞃
+𝞄
+𝞅
+𝞆
+𝞇
+𝞈
+𝞊
+𝞋
+𝞌
+𝞍
+𝞎
+𝞏
+𝞐
+𝞑
+𝞒
+𝞓
+𝞔
+𝞕
+𝞖
+𝞗
+𝞘
+𝞙
+𝞚
+𝞛
+𝞜
+𝞝
+𝞞
+𝞟
+𝞠
+𝞡
+𝞢
+𝞣
+𝞤
+𝞥
+𝞦
+𝞧
+𝞨
+𝞪
+𝞫
+𝞬
+𝞭
+𝞮
+𝞯
+𝞰
+𝞱
+𝞲
+𝞳
+𝞴
+𝞵
+𝞶
+𝞷
+𝞸
+𝞹
+𝞺
+𝞻
+𝞼
+𝞽
+𝞾
+𝞿
+𝟀
+𝟁
+𝟂
+𝟄
+𝟅
+𝟆
+𝟇
+𝟈
+𝟉
diff --git a/lowercasing_test/src/tests/lowercasing/lowercasing_test.sh b/lowercasing_test/src/tests/lowercasing/lowercasing_test.sh
new file mode 100755
index 00000000000..fc639ce970d
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/lowercasing_test.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+. ../../binref/env.sh
+
+$BINREF/compilejava CasingVariants.java
+sh dotest.sh
diff --git a/lowercasing_test/src/tests/lowercasing/ref.fastlib.txt.java8 b/lowercasing_test/src/tests/lowercasing/ref.fastlib.txt.java8
new file mode 100644
index 00000000000..e13939e7217
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/ref.fastlib.txt.java8
@@ -0,0 +1,131 @@
+input(Ӏ,1216,0x4C0), lower(Ӏ,1216,0x4C0), ref(ӏ,1231,0x4CF)
+input(Ⴀ,4256,0x10A0), lower(Ⴀ,4256,0x10A0), ref(ⴀ,11520,0x2D00)
+input(Ⴁ,4257,0x10A1), lower(Ⴁ,4257,0x10A1), ref(ⴁ,11521,0x2D01)
+input(Ⴂ,4258,0x10A2), lower(Ⴂ,4258,0x10A2), ref(ⴂ,11522,0x2D02)
+input(Ⴃ,4259,0x10A3), lower(Ⴃ,4259,0x10A3), ref(ⴃ,11523,0x2D03)
+input(Ⴄ,4260,0x10A4), lower(Ⴄ,4260,0x10A4), ref(ⴄ,11524,0x2D04)
+input(Ⴅ,4261,0x10A5), lower(Ⴅ,4261,0x10A5), ref(ⴅ,11525,0x2D05)
+input(Ⴆ,4262,0x10A6), lower(Ⴆ,4262,0x10A6), ref(ⴆ,11526,0x2D06)
+input(Ⴇ,4263,0x10A7), lower(Ⴇ,4263,0x10A7), ref(ⴇ,11527,0x2D07)
+input(Ⴈ,4264,0x10A8), lower(Ⴈ,4264,0x10A8), ref(ⴈ,11528,0x2D08)
+input(Ⴉ,4265,0x10A9), lower(Ⴉ,4265,0x10A9), ref(ⴉ,11529,0x2D09)
+input(Ⴊ,4266,0x10AA), lower(Ⴊ,4266,0x10AA), ref(ⴊ,11530,0x2D0A)
+input(Ⴋ,4267,0x10AB), lower(Ⴋ,4267,0x10AB), ref(ⴋ,11531,0x2D0B)
+input(Ⴌ,4268,0x10AC), lower(Ⴌ,4268,0x10AC), ref(ⴌ,11532,0x2D0C)
+input(Ⴍ,4269,0x10AD), lower(Ⴍ,4269,0x10AD), ref(ⴍ,11533,0x2D0D)
+input(Ⴎ,4270,0x10AE), lower(Ⴎ,4270,0x10AE), ref(ⴎ,11534,0x2D0E)
+input(Ⴏ,4271,0x10AF), lower(Ⴏ,4271,0x10AF), ref(ⴏ,11535,0x2D0F)
+input(Ⴐ,4272,0x10B0), lower(Ⴐ,4272,0x10B0), ref(ⴐ,11536,0x2D10)
+input(Ⴑ,4273,0x10B1), lower(Ⴑ,4273,0x10B1), ref(ⴑ,11537,0x2D11)
+input(Ⴒ,4274,0x10B2), lower(Ⴒ,4274,0x10B2), ref(ⴒ,11538,0x2D12)
+input(Ⴓ,4275,0x10B3), lower(Ⴓ,4275,0x10B3), ref(ⴓ,11539,0x2D13)
+input(Ⴔ,4276,0x10B4), lower(Ⴔ,4276,0x10B4), ref(ⴔ,11540,0x2D14)
+input(Ⴕ,4277,0x10B5), lower(Ⴕ,4277,0x10B5), ref(ⴕ,11541,0x2D15)
+input(Ⴖ,4278,0x10B6), lower(Ⴖ,4278,0x10B6), ref(ⴖ,11542,0x2D16)
+input(Ⴗ,4279,0x10B7), lower(Ⴗ,4279,0x10B7), ref(ⴗ,11543,0x2D17)
+input(Ⴘ,4280,0x10B8), lower(Ⴘ,4280,0x10B8), ref(ⴘ,11544,0x2D18)
+input(Ⴙ,4281,0x10B9), lower(Ⴙ,4281,0x10B9), ref(ⴙ,11545,0x2D19)
+input(Ⴚ,4282,0x10BA), lower(Ⴚ,4282,0x10BA), ref(ⴚ,11546,0x2D1A)
+input(Ⴛ,4283,0x10BB), lower(Ⴛ,4283,0x10BB), ref(ⴛ,11547,0x2D1B)
+input(Ⴜ,4284,0x10BC), lower(Ⴜ,4284,0x10BC), ref(ⴜ,11548,0x2D1C)
+input(Ⴝ,4285,0x10BD), lower(Ⴝ,4285,0x10BD), ref(ⴝ,11549,0x2D1D)
+input(Ⴞ,4286,0x10BE), lower(Ⴞ,4286,0x10BE), ref(ⴞ,11550,0x2D1E)
+input(Ⴟ,4287,0x10BF), lower(Ⴟ,4287,0x10BF), ref(ⴟ,11551,0x2D1F)
+input(Ⴠ,4288,0x10C0), lower(Ⴠ,4288,0x10C0), ref(ⴠ,11552,0x2D20)
+input(Ⴡ,4289,0x10C1), lower(Ⴡ,4289,0x10C1), ref(ⴡ,11553,0x2D21)
+input(Ⴢ,4290,0x10C2), lower(Ⴢ,4290,0x10C2), ref(ⴢ,11554,0x2D22)
+input(Ⴣ,4291,0x10C3), lower(Ⴣ,4291,0x10C3), ref(ⴣ,11555,0x2D23)
+input(Ⴤ,4292,0x10C4), lower(Ⴤ,4292,0x10C4), ref(ⴤ,11556,0x2D24)
+input(Ⴥ,4293,0x10C5), lower(Ⴥ,4293,0x10C5), ref(ⴥ,11557,0x2D25)
+input(A,65313,0xFF21), lower(a,97,0x61), ref(a,65345,0xFF41)
+input(B,65314,0xFF22), lower(b,98,0x62), ref(b,65346,0xFF42)
+input(C,65315,0xFF23), lower(c,99,0x63), ref(c,65347,0xFF43)
+input(D,65316,0xFF24), lower(d,100,0x64), ref(d,65348,0xFF44)
+input(E,65317,0xFF25), lower(e,101,0x65), ref(e,65349,0xFF45)
+input(F,65318,0xFF26), lower(f,102,0x66), ref(f,65350,0xFF46)
+input(G,65319,0xFF27), lower(g,103,0x67), ref(g,65351,0xFF47)
+input(H,65320,0xFF28), lower(h,104,0x68), ref(h,65352,0xFF48)
+input(I,65321,0xFF29), lower(i,105,0x69), ref(i,65353,0xFF49)
+input(J,65322,0xFF2A), lower(j,106,0x6A), ref(j,65354,0xFF4A)
+input(K,65323,0xFF2B), lower(k,107,0x6B), ref(k,65355,0xFF4B)
+input(L,65324,0xFF2C), lower(l,108,0x6C), ref(l,65356,0xFF4C)
+input(M,65325,0xFF2D), lower(m,109,0x6D), ref(m,65357,0xFF4D)
+input(N,65326,0xFF2E), lower(n,110,0x6E), ref(n,65358,0xFF4E)
+input(O,65327,0xFF2F), lower(o,111,0x6F), ref(o,65359,0xFF4F)
+input(P,65328,0xFF30), lower(p,112,0x70), ref(p,65360,0xFF50)
+input(Q,65329,0xFF31), lower(q,113,0x71), ref(q,65361,0xFF51)
+input(R,65330,0xFF32), lower(r,114,0x72), ref(r,65362,0xFF52)
+input(S,65331,0xFF33), lower(s,115,0x73), ref(s,65363,0xFF53)
+input(T,65332,0xFF34), lower(t,116,0x74), ref(t,65364,0xFF54)
+input(U,65333,0xFF35), lower(u,117,0x75), ref(u,65365,0xFF55)
+input(V,65334,0xFF36), lower(v,118,0x76), ref(v,65366,0xFF56)
+input(W,65335,0xFF37), lower(w,119,0x77), ref(w,65367,0xFF57)
+input(X,65336,0xFF38), lower(x,120,0x78), ref(x,65368,0xFF58)
+input(Y,65337,0xFF39), lower(y,121,0x79), ref(y,65369,0xFF59)
+input(Z,65338,0xFF3A), lower(z,122,0x7A), ref(z,65370,0xFF5A)
+input(a,65345,0xFF41), lower(a,97,0x61), ref(a,65345,0xFF41)
+input(b,65346,0xFF42), lower(b,98,0x62), ref(b,65346,0xFF42)
+input(c,65347,0xFF43), lower(c,99,0x63), ref(c,65347,0xFF43)
+input(d,65348,0xFF44), lower(d,100,0x64), ref(d,65348,0xFF44)
+input(e,65349,0xFF45), lower(e,101,0x65), ref(e,65349,0xFF45)
+input(f,65350,0xFF46), lower(f,102,0x66), ref(f,65350,0xFF46)
+input(g,65351,0xFF47), lower(g,103,0x67), ref(g,65351,0xFF47)
+input(h,65352,0xFF48), lower(h,104,0x68), ref(h,65352,0xFF48)
+input(i,65353,0xFF49), lower(i,105,0x69), ref(i,65353,0xFF49)
+input(j,65354,0xFF4A), lower(j,106,0x6A), ref(j,65354,0xFF4A)
+input(k,65355,0xFF4B), lower(k,107,0x6B), ref(k,65355,0xFF4B)
+input(l,65356,0xFF4C), lower(l,108,0x6C), ref(l,65356,0xFF4C)
+input(m,65357,0xFF4D), lower(m,109,0x6D), ref(m,65357,0xFF4D)
+input(n,65358,0xFF4E), lower(n,110,0x6E), ref(n,65358,0xFF4E)
+input(o,65359,0xFF4F), lower(o,111,0x6F), ref(o,65359,0xFF4F)
+input(p,65360,0xFF50), lower(p,112,0x70), ref(p,65360,0xFF50)
+input(q,65361,0xFF51), lower(q,113,0x71), ref(q,65361,0xFF51)
+input(r,65362,0xFF52), lower(r,114,0x72), ref(r,65362,0xFF52)
+input(s,65363,0xFF53), lower(s,115,0x73), ref(s,65363,0xFF53)
+input(t,65364,0xFF54), lower(t,116,0x74), ref(t,65364,0xFF54)
+input(u,65365,0xFF55), lower(u,117,0x75), ref(u,65365,0xFF55)
+input(v,65366,0xFF56), lower(v,118,0x76), ref(v,65366,0xFF56)
+input(w,65367,0xFF57), lower(w,119,0x77), ref(w,65367,0xFF57)
+input(x,65368,0xFF58), lower(x,120,0x78), ref(x,65368,0xFF58)
+input(y,65369,0xFF59), lower(y,121,0x79), ref(y,65369,0xFF59)
+input(z,65370,0xFF5A), lower(z,122,0x7A), ref(z,65370,0xFF5A)
+input(𐐀,66560,0x10400), lower(𐐀,66560,0x10400), ref(𐐨,66600,0x10428)
+input(𐐁,66561,0x10401), lower(𐐁,66561,0x10401), ref(𐐩,66601,0x10429)
+input(𐐂,66562,0x10402), lower(𐐂,66562,0x10402), ref(𐐪,66602,0x1042A)
+input(𐐃,66563,0x10403), lower(𐐃,66563,0x10403), ref(𐐫,66603,0x1042B)
+input(𐐄,66564,0x10404), lower(𐐄,66564,0x10404), ref(𐐬,66604,0x1042C)
+input(𐐅,66565,0x10405), lower(𐐅,66565,0x10405), ref(𐐭,66605,0x1042D)
+input(𐐆,66566,0x10406), lower(𐐆,66566,0x10406), ref(𐐮,66606,0x1042E)
+input(𐐇,66567,0x10407), lower(𐐇,66567,0x10407), ref(𐐯,66607,0x1042F)
+input(𐐈,66568,0x10408), lower(𐐈,66568,0x10408), ref(𐐰,66608,0x10430)
+input(𐐉,66569,0x10409), lower(𐐉,66569,0x10409), ref(𐐱,66609,0x10431)
+input(𐐊,66570,0x1040A), lower(𐐊,66570,0x1040A), ref(𐐲,66610,0x10432)
+input(𐐋,66571,0x1040B), lower(𐐋,66571,0x1040B), ref(𐐳,66611,0x10433)
+input(𐐌,66572,0x1040C), lower(𐐌,66572,0x1040C), ref(𐐴,66612,0x10434)
+input(𐐍,66573,0x1040D), lower(𐐍,66573,0x1040D), ref(𐐵,66613,0x10435)
+input(𐐎,66574,0x1040E), lower(𐐎,66574,0x1040E), ref(𐐶,66614,0x10436)
+input(𐐏,66575,0x1040F), lower(𐐏,66575,0x1040F), ref(𐐷,66615,0x10437)
+input(𐐐,66576,0x10410), lower(𐐐,66576,0x10410), ref(𐐸,66616,0x10438)
+input(𐐑,66577,0x10411), lower(𐐑,66577,0x10411), ref(𐐹,66617,0x10439)
+input(𐐒,66578,0x10412), lower(𐐒,66578,0x10412), ref(𐐺,66618,0x1043A)
+input(𐐓,66579,0x10413), lower(𐐓,66579,0x10413), ref(𐐻,66619,0x1043B)
+input(𐐔,66580,0x10414), lower(𐐔,66580,0x10414), ref(𐐼,66620,0x1043C)
+input(𐐕,66581,0x10415), lower(𐐕,66581,0x10415), ref(𐐽,66621,0x1043D)
+input(𐐖,66582,0x10416), lower(𐐖,66582,0x10416), ref(𐐾,66622,0x1043E)
+input(𐐗,66583,0x10417), lower(𐐗,66583,0x10417), ref(𐐿,66623,0x1043F)
+input(𐐘,66584,0x10418), lower(𐐘,66584,0x10418), ref(𐑀,66624,0x10440)
+input(𐐙,66585,0x10419), lower(𐐙,66585,0x10419), ref(𐑁,66625,0x10441)
+input(𐐚,66586,0x1041A), lower(𐐚,66586,0x1041A), ref(𐑂,66626,0x10442)
+input(𐐛,66587,0x1041B), lower(𐐛,66587,0x1041B), ref(𐑃,66627,0x10443)
+input(𐐜,66588,0x1041C), lower(𐐜,66588,0x1041C), ref(𐑄,66628,0x10444)
+input(𐐝,66589,0x1041D), lower(𐐝,66589,0x1041D), ref(𐑅,66629,0x10445)
+input(𐐞,66590,0x1041E), lower(𐐞,66590,0x1041E), ref(𐑆,66630,0x10446)
+input(𐐟,66591,0x1041F), lower(𐐟,66591,0x1041F), ref(𐑇,66631,0x10447)
+input(𐐠,66592,0x10420), lower(𐐠,66592,0x10420), ref(𐑈,66632,0x10448)
+input(𐐡,66593,0x10421), lower(𐐡,66593,0x10421), ref(𐑉,66633,0x10449)
+input(𐐢,66594,0x10422), lower(𐐢,66594,0x10422), ref(𐑊,66634,0x1044A)
+input(𐐣,66595,0x10423), lower(𐐣,66595,0x10423), ref(𐑋,66635,0x1044B)
+input(𐐤,66596,0x10424), lower(𐐤,66596,0x10424), ref(𐑌,66636,0x1044C)
+input(𐐥,66597,0x10425), lower(𐐥,66597,0x10425), ref(𐑍,66637,0x1044D)
+input(𐐦,66598,0x10426), lower(𐐦,66598,0x10426), ref(𐑎,66638,0x1044E)
+input(𐐧,66599,0x10427), lower(𐐧,66599,0x10427), ref(𐑏,66639,0x1044F)
diff --git a/lowercasing_test/src/tests/lowercasing/ref.fastlib.txt.java8u20 b/lowercasing_test/src/tests/lowercasing/ref.fastlib.txt.java8u20
new file mode 100644
index 00000000000..e13939e7217
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/ref.fastlib.txt.java8u20
@@ -0,0 +1,131 @@
+input(Ӏ,1216,0x4C0), lower(Ӏ,1216,0x4C0), ref(ӏ,1231,0x4CF)
+input(Ⴀ,4256,0x10A0), lower(Ⴀ,4256,0x10A0), ref(ⴀ,11520,0x2D00)
+input(Ⴁ,4257,0x10A1), lower(Ⴁ,4257,0x10A1), ref(ⴁ,11521,0x2D01)
+input(Ⴂ,4258,0x10A2), lower(Ⴂ,4258,0x10A2), ref(ⴂ,11522,0x2D02)
+input(Ⴃ,4259,0x10A3), lower(Ⴃ,4259,0x10A3), ref(ⴃ,11523,0x2D03)
+input(Ⴄ,4260,0x10A4), lower(Ⴄ,4260,0x10A4), ref(ⴄ,11524,0x2D04)
+input(Ⴅ,4261,0x10A5), lower(Ⴅ,4261,0x10A5), ref(ⴅ,11525,0x2D05)
+input(Ⴆ,4262,0x10A6), lower(Ⴆ,4262,0x10A6), ref(ⴆ,11526,0x2D06)
+input(Ⴇ,4263,0x10A7), lower(Ⴇ,4263,0x10A7), ref(ⴇ,11527,0x2D07)
+input(Ⴈ,4264,0x10A8), lower(Ⴈ,4264,0x10A8), ref(ⴈ,11528,0x2D08)
+input(Ⴉ,4265,0x10A9), lower(Ⴉ,4265,0x10A9), ref(ⴉ,11529,0x2D09)
+input(Ⴊ,4266,0x10AA), lower(Ⴊ,4266,0x10AA), ref(ⴊ,11530,0x2D0A)
+input(Ⴋ,4267,0x10AB), lower(Ⴋ,4267,0x10AB), ref(ⴋ,11531,0x2D0B)
+input(Ⴌ,4268,0x10AC), lower(Ⴌ,4268,0x10AC), ref(ⴌ,11532,0x2D0C)
+input(Ⴍ,4269,0x10AD), lower(Ⴍ,4269,0x10AD), ref(ⴍ,11533,0x2D0D)
+input(Ⴎ,4270,0x10AE), lower(Ⴎ,4270,0x10AE), ref(ⴎ,11534,0x2D0E)
+input(Ⴏ,4271,0x10AF), lower(Ⴏ,4271,0x10AF), ref(ⴏ,11535,0x2D0F)
+input(Ⴐ,4272,0x10B0), lower(Ⴐ,4272,0x10B0), ref(ⴐ,11536,0x2D10)
+input(Ⴑ,4273,0x10B1), lower(Ⴑ,4273,0x10B1), ref(ⴑ,11537,0x2D11)
+input(Ⴒ,4274,0x10B2), lower(Ⴒ,4274,0x10B2), ref(ⴒ,11538,0x2D12)
+input(Ⴓ,4275,0x10B3), lower(Ⴓ,4275,0x10B3), ref(ⴓ,11539,0x2D13)
+input(Ⴔ,4276,0x10B4), lower(Ⴔ,4276,0x10B4), ref(ⴔ,11540,0x2D14)
+input(Ⴕ,4277,0x10B5), lower(Ⴕ,4277,0x10B5), ref(ⴕ,11541,0x2D15)
+input(Ⴖ,4278,0x10B6), lower(Ⴖ,4278,0x10B6), ref(ⴖ,11542,0x2D16)
+input(Ⴗ,4279,0x10B7), lower(Ⴗ,4279,0x10B7), ref(ⴗ,11543,0x2D17)
+input(Ⴘ,4280,0x10B8), lower(Ⴘ,4280,0x10B8), ref(ⴘ,11544,0x2D18)
+input(Ⴙ,4281,0x10B9), lower(Ⴙ,4281,0x10B9), ref(ⴙ,11545,0x2D19)
+input(Ⴚ,4282,0x10BA), lower(Ⴚ,4282,0x10BA), ref(ⴚ,11546,0x2D1A)
+input(Ⴛ,4283,0x10BB), lower(Ⴛ,4283,0x10BB), ref(ⴛ,11547,0x2D1B)
+input(Ⴜ,4284,0x10BC), lower(Ⴜ,4284,0x10BC), ref(ⴜ,11548,0x2D1C)
+input(Ⴝ,4285,0x10BD), lower(Ⴝ,4285,0x10BD), ref(ⴝ,11549,0x2D1D)
+input(Ⴞ,4286,0x10BE), lower(Ⴞ,4286,0x10BE), ref(ⴞ,11550,0x2D1E)
+input(Ⴟ,4287,0x10BF), lower(Ⴟ,4287,0x10BF), ref(ⴟ,11551,0x2D1F)
+input(Ⴠ,4288,0x10C0), lower(Ⴠ,4288,0x10C0), ref(ⴠ,11552,0x2D20)
+input(Ⴡ,4289,0x10C1), lower(Ⴡ,4289,0x10C1), ref(ⴡ,11553,0x2D21)
+input(Ⴢ,4290,0x10C2), lower(Ⴢ,4290,0x10C2), ref(ⴢ,11554,0x2D22)
+input(Ⴣ,4291,0x10C3), lower(Ⴣ,4291,0x10C3), ref(ⴣ,11555,0x2D23)
+input(Ⴤ,4292,0x10C4), lower(Ⴤ,4292,0x10C4), ref(ⴤ,11556,0x2D24)
+input(Ⴥ,4293,0x10C5), lower(Ⴥ,4293,0x10C5), ref(ⴥ,11557,0x2D25)
+input(A,65313,0xFF21), lower(a,97,0x61), ref(a,65345,0xFF41)
+input(B,65314,0xFF22), lower(b,98,0x62), ref(b,65346,0xFF42)
+input(C,65315,0xFF23), lower(c,99,0x63), ref(c,65347,0xFF43)
+input(D,65316,0xFF24), lower(d,100,0x64), ref(d,65348,0xFF44)
+input(E,65317,0xFF25), lower(e,101,0x65), ref(e,65349,0xFF45)
+input(F,65318,0xFF26), lower(f,102,0x66), ref(f,65350,0xFF46)
+input(G,65319,0xFF27), lower(g,103,0x67), ref(g,65351,0xFF47)
+input(H,65320,0xFF28), lower(h,104,0x68), ref(h,65352,0xFF48)
+input(I,65321,0xFF29), lower(i,105,0x69), ref(i,65353,0xFF49)
+input(J,65322,0xFF2A), lower(j,106,0x6A), ref(j,65354,0xFF4A)
+input(K,65323,0xFF2B), lower(k,107,0x6B), ref(k,65355,0xFF4B)
+input(L,65324,0xFF2C), lower(l,108,0x6C), ref(l,65356,0xFF4C)
+input(M,65325,0xFF2D), lower(m,109,0x6D), ref(m,65357,0xFF4D)
+input(N,65326,0xFF2E), lower(n,110,0x6E), ref(n,65358,0xFF4E)
+input(O,65327,0xFF2F), lower(o,111,0x6F), ref(o,65359,0xFF4F)
+input(P,65328,0xFF30), lower(p,112,0x70), ref(p,65360,0xFF50)
+input(Q,65329,0xFF31), lower(q,113,0x71), ref(q,65361,0xFF51)
+input(R,65330,0xFF32), lower(r,114,0x72), ref(r,65362,0xFF52)
+input(S,65331,0xFF33), lower(s,115,0x73), ref(s,65363,0xFF53)
+input(T,65332,0xFF34), lower(t,116,0x74), ref(t,65364,0xFF54)
+input(U,65333,0xFF35), lower(u,117,0x75), ref(u,65365,0xFF55)
+input(V,65334,0xFF36), lower(v,118,0x76), ref(v,65366,0xFF56)
+input(W,65335,0xFF37), lower(w,119,0x77), ref(w,65367,0xFF57)
+input(X,65336,0xFF38), lower(x,120,0x78), ref(x,65368,0xFF58)
+input(Y,65337,0xFF39), lower(y,121,0x79), ref(y,65369,0xFF59)
+input(Z,65338,0xFF3A), lower(z,122,0x7A), ref(z,65370,0xFF5A)
+input(a,65345,0xFF41), lower(a,97,0x61), ref(a,65345,0xFF41)
+input(b,65346,0xFF42), lower(b,98,0x62), ref(b,65346,0xFF42)
+input(c,65347,0xFF43), lower(c,99,0x63), ref(c,65347,0xFF43)
+input(d,65348,0xFF44), lower(d,100,0x64), ref(d,65348,0xFF44)
+input(e,65349,0xFF45), lower(e,101,0x65), ref(e,65349,0xFF45)
+input(f,65350,0xFF46), lower(f,102,0x66), ref(f,65350,0xFF46)
+input(g,65351,0xFF47), lower(g,103,0x67), ref(g,65351,0xFF47)
+input(h,65352,0xFF48), lower(h,104,0x68), ref(h,65352,0xFF48)
+input(i,65353,0xFF49), lower(i,105,0x69), ref(i,65353,0xFF49)
+input(j,65354,0xFF4A), lower(j,106,0x6A), ref(j,65354,0xFF4A)
+input(k,65355,0xFF4B), lower(k,107,0x6B), ref(k,65355,0xFF4B)
+input(l,65356,0xFF4C), lower(l,108,0x6C), ref(l,65356,0xFF4C)
+input(m,65357,0xFF4D), lower(m,109,0x6D), ref(m,65357,0xFF4D)
+input(n,65358,0xFF4E), lower(n,110,0x6E), ref(n,65358,0xFF4E)
+input(o,65359,0xFF4F), lower(o,111,0x6F), ref(o,65359,0xFF4F)
+input(p,65360,0xFF50), lower(p,112,0x70), ref(p,65360,0xFF50)
+input(q,65361,0xFF51), lower(q,113,0x71), ref(q,65361,0xFF51)
+input(r,65362,0xFF52), lower(r,114,0x72), ref(r,65362,0xFF52)
+input(s,65363,0xFF53), lower(s,115,0x73), ref(s,65363,0xFF53)
+input(t,65364,0xFF54), lower(t,116,0x74), ref(t,65364,0xFF54)
+input(u,65365,0xFF55), lower(u,117,0x75), ref(u,65365,0xFF55)
+input(v,65366,0xFF56), lower(v,118,0x76), ref(v,65366,0xFF56)
+input(w,65367,0xFF57), lower(w,119,0x77), ref(w,65367,0xFF57)
+input(x,65368,0xFF58), lower(x,120,0x78), ref(x,65368,0xFF58)
+input(y,65369,0xFF59), lower(y,121,0x79), ref(y,65369,0xFF59)
+input(z,65370,0xFF5A), lower(z,122,0x7A), ref(z,65370,0xFF5A)
+input(𐐀,66560,0x10400), lower(𐐀,66560,0x10400), ref(𐐨,66600,0x10428)
+input(𐐁,66561,0x10401), lower(𐐁,66561,0x10401), ref(𐐩,66601,0x10429)
+input(𐐂,66562,0x10402), lower(𐐂,66562,0x10402), ref(𐐪,66602,0x1042A)
+input(𐐃,66563,0x10403), lower(𐐃,66563,0x10403), ref(𐐫,66603,0x1042B)
+input(𐐄,66564,0x10404), lower(𐐄,66564,0x10404), ref(𐐬,66604,0x1042C)
+input(𐐅,66565,0x10405), lower(𐐅,66565,0x10405), ref(𐐭,66605,0x1042D)
+input(𐐆,66566,0x10406), lower(𐐆,66566,0x10406), ref(𐐮,66606,0x1042E)
+input(𐐇,66567,0x10407), lower(𐐇,66567,0x10407), ref(𐐯,66607,0x1042F)
+input(𐐈,66568,0x10408), lower(𐐈,66568,0x10408), ref(𐐰,66608,0x10430)
+input(𐐉,66569,0x10409), lower(𐐉,66569,0x10409), ref(𐐱,66609,0x10431)
+input(𐐊,66570,0x1040A), lower(𐐊,66570,0x1040A), ref(𐐲,66610,0x10432)
+input(𐐋,66571,0x1040B), lower(𐐋,66571,0x1040B), ref(𐐳,66611,0x10433)
+input(𐐌,66572,0x1040C), lower(𐐌,66572,0x1040C), ref(𐐴,66612,0x10434)
+input(𐐍,66573,0x1040D), lower(𐐍,66573,0x1040D), ref(𐐵,66613,0x10435)
+input(𐐎,66574,0x1040E), lower(𐐎,66574,0x1040E), ref(𐐶,66614,0x10436)
+input(𐐏,66575,0x1040F), lower(𐐏,66575,0x1040F), ref(𐐷,66615,0x10437)
+input(𐐐,66576,0x10410), lower(𐐐,66576,0x10410), ref(𐐸,66616,0x10438)
+input(𐐑,66577,0x10411), lower(𐐑,66577,0x10411), ref(𐐹,66617,0x10439)
+input(𐐒,66578,0x10412), lower(𐐒,66578,0x10412), ref(𐐺,66618,0x1043A)
+input(𐐓,66579,0x10413), lower(𐐓,66579,0x10413), ref(𐐻,66619,0x1043B)
+input(𐐔,66580,0x10414), lower(𐐔,66580,0x10414), ref(𐐼,66620,0x1043C)
+input(𐐕,66581,0x10415), lower(𐐕,66581,0x10415), ref(𐐽,66621,0x1043D)
+input(𐐖,66582,0x10416), lower(𐐖,66582,0x10416), ref(𐐾,66622,0x1043E)
+input(𐐗,66583,0x10417), lower(𐐗,66583,0x10417), ref(𐐿,66623,0x1043F)
+input(𐐘,66584,0x10418), lower(𐐘,66584,0x10418), ref(𐑀,66624,0x10440)
+input(𐐙,66585,0x10419), lower(𐐙,66585,0x10419), ref(𐑁,66625,0x10441)
+input(𐐚,66586,0x1041A), lower(𐐚,66586,0x1041A), ref(𐑂,66626,0x10442)
+input(𐐛,66587,0x1041B), lower(𐐛,66587,0x1041B), ref(𐑃,66627,0x10443)
+input(𐐜,66588,0x1041C), lower(𐐜,66588,0x1041C), ref(𐑄,66628,0x10444)
+input(𐐝,66589,0x1041D), lower(𐐝,66589,0x1041D), ref(𐑅,66629,0x10445)
+input(𐐞,66590,0x1041E), lower(𐐞,66590,0x1041E), ref(𐑆,66630,0x10446)
+input(𐐟,66591,0x1041F), lower(𐐟,66591,0x1041F), ref(𐑇,66631,0x10447)
+input(𐐠,66592,0x10420), lower(𐐠,66592,0x10420), ref(𐑈,66632,0x10448)
+input(𐐡,66593,0x10421), lower(𐐡,66593,0x10421), ref(𐑉,66633,0x10449)
+input(𐐢,66594,0x10422), lower(𐐢,66594,0x10422), ref(𐑊,66634,0x1044A)
+input(𐐣,66595,0x10423), lower(𐐣,66595,0x10423), ref(𐑋,66635,0x1044B)
+input(𐐤,66596,0x10424), lower(𐐤,66596,0x10424), ref(𐑌,66636,0x1044C)
+input(𐐥,66597,0x10425), lower(𐐥,66597,0x10425), ref(𐑍,66637,0x1044D)
+input(𐐦,66598,0x10426), lower(𐐦,66598,0x10426), ref(𐑎,66638,0x1044E)
+input(𐐧,66599,0x10427), lower(𐐧,66599,0x10427), ref(𐑏,66639,0x1044F)
diff --git a/lowercasing_test/src/tests/lowercasing/ref.txt.java8 b/lowercasing_test/src/tests/lowercasing/ref.txt.java8
new file mode 100644
index 00000000000..08b9b9cdebd
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/ref.txt.java8
@@ -0,0 +1,2605 @@
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+ÿ
+i
+ÿ
+ſ
+ƿ
+ƿ
+ǿ
+ǿ
+ɿ
+ο
+ο
+п
+п
+ѿ
+ѿ
+ҿ
+ҿ
+տ
+տ
+ⴀ
+ⴁ
+ⴂ
+ⴃ
+ⴄ
+ⴅ
+ⴆ
+ⴇ
+ⴈ
+ⴉ
+ⴊ
+ⴋ
+ⴌ
+ⴍ
+ⴎ
+ⴏ
+ⴐ
+ⴑ
+ⴒ
+ⴓ
+ⴔ
+ⴕ
+ⴖ
+ⴗ
+ⴘ
+ⴙ
+ⴚ
+ⴛ
+ⴜ
+ⴝ
+ⴞ
+ⴟ
+ⴠ
+ⴡ
+ⴢ
+ⴣ
+ⴤ
+ⴥ
+ᴀ
+ᴁ
+ᴂ
+ᴃ
+ᴄ
+ᴅ
+ᴆ
+ᴇ
+ᴈ
+ᴉ
+ᴊ
+ᴋ
+ᴌ
+ᴍ
+ᴎ
+ᴏ
+ᴐ
+ᴑ
+ᴒ
+ᴓ
+ᴔ
+ᴕ
+ᴖ
+ᴗ
+ᴘ
+ᴙ
+ᴚ
+ᴛ
+ᴜ
+ᴝ
+ᴞ
+ᴟ
+ᴠ
+ᴡ
+ᴢ
+ᴣ
+ᴤ
+ᴥ
+ᴦ
+ᴧ
+ᴨ
+ᴩ
+ᴪ
+ᴫ
+ᵢ
+ᵣ
+ᵤ
+ᵥ
+ᵦ
+ᵧ
+ᵨ
+ᵩ
+ᵪ
+ᵫ
+ḁ
+ḁ
+ḃ
+ḃ
+ḅ
+ḅ
+ḇ
+ḇ
+ḉ
+ḉ
+ḋ
+ḋ
+ḍ
+ḍ
+ḏ
+ḏ
+ḑ
+ḑ
+ḓ
+ḓ
+ḕ
+ḕ
+ḗ
+ḗ
+ḙ
+ḙ
+ḛ
+ḛ
+ḝ
+ḝ
+ḟ
+ḟ
+ḡ
+ḡ
+ḣ
+ḣ
+ḥ
+ḥ
+ḧ
+ḧ
+ḩ
+ḩ
+ḫ
+ḫ
+ḭ
+ḭ
+ḯ
+ḯ
+ḱ
+ḱ
+ḳ
+ḳ
+ḵ
+ḵ
+ḷ
+ḷ
+ḹ
+ḹ
+ḻ
+ḻ
+ḽ
+ḽ
+ḿ
+ḿ
+ṁ
+ṁ
+ṃ
+ṃ
+ṅ
+ṅ
+ṇ
+ṇ
+ṉ
+ṉ
+ṋ
+ṋ
+ṍ
+ṍ
+ṏ
+ṏ
+ṑ
+ṑ
+ṓ
+ṓ
+ṕ
+ṕ
+ṗ
+ṗ
+ṙ
+ṙ
+ṛ
+ṛ
+ṝ
+ṝ
+ṟ
+ṟ
+ṡ
+ṡ
+ṣ
+ṣ
+ṥ
+ṥ
+ṧ
+ṧ
+ṩ
+ṩ
+ṫ
+ṫ
+ṭ
+ṭ
+ṯ
+ṯ
+ṱ
+ṱ
+ṳ
+ṳ
+ṵ
+ṵ
+ṷ
+ṷ
+ṹ
+ṹ
+ṻ
+ṻ
+ṽ
+ṽ
+ṿ
+ṿ
+ẁ
+ẁ
+ẃ
+ẃ
+ẅ
+ẅ
+ẇ
+ẇ
+ẉ
+ẉ
+ẋ
+ẋ
+ẍ
+ẍ
+ẏ
+ẏ
+ẑ
+ẑ
+ẓ
+ẓ
+ẕ
+ẕ
+ẖ
+ẗ
+ẘ
+ẙ
+ẚ
+ẛ
+ạ
+ạ
+ả
+ả
+ấ
+ấ
+ầ
+ầ
+ẩ
+ẩ
+ẫ
+ẫ
+ậ
+ậ
+ắ
+ắ
+ằ
+ằ
+ẳ
+ẳ
+ẵ
+ẵ
+ặ
+ặ
+ẹ
+ẹ
+ẻ
+ẻ
+ẽ
+ẽ
+ế
+ế
+ề
+ề
+ể
+ể
+ễ
+ễ
+ệ
+ệ
+ỉ
+ỉ
+ị
+ị
+ọ
+ọ
+ỏ
+ỏ
+ố
+ố
+ồ
+ồ
+ổ
+ổ
+ỗ
+ỗ
+ộ
+ộ
+ớ
+ớ
+ờ
+ờ
+ở
+ở
+ỡ
+ỡ
+ợ
+ợ
+ụ
+ụ
+ủ
+ủ
+ứ
+ứ
+ừ
+ừ
+ử
+ử
+ữ
+ữ
+ự
+ự
+ỳ
+ỳ
+ỵ
+ỵ
+ỷ
+ỷ
+ỹ
+ỹ
+ἀ
+ἁ
+ἂ
+ἃ
+ἄ
+ἅ
+ἆ
+ἇ
+ἀ
+ἁ
+ἂ
+ἃ
+ἄ
+ἅ
+ἆ
+ἇ
+ἐ
+ἑ
+ἒ
+ἓ
+ἔ
+ἕ
+ἐ
+ἑ
+ἒ
+ἓ
+ἔ
+ἕ
+ἠ
+ἡ
+ἢ
+ἣ
+ἤ
+ἥ
+ἦ
+ἧ
+ἠ
+ἡ
+ἢ
+ἣ
+ἤ
+ἥ
+ἦ
+ἧ
+ἰ
+ἱ
+ἲ
+ἳ
+ἴ
+ἵ
+ἶ
+ἷ
+ἰ
+ἱ
+ἲ
+ἳ
+ἴ
+ἵ
+ἶ
+ἷ
+ὀ
+ὁ
+ὂ
+ὃ
+ὄ
+ὅ
+ὀ
+ὁ
+ὂ
+ὃ
+ὄ
+ὅ
+ὐ
+ὑ
+ὒ
+ὓ
+ὔ
+ὕ
+ὖ
+ὗ
+ὑ
+ὓ
+ὕ
+ὗ
+ὠ
+ὡ
+ὢ
+ὣ
+ὤ
+ὥ
+ὦ
+ὧ
+ὠ
+ὡ
+ὢ
+ὣ
+ὤ
+ὥ
+ὦ
+ὧ
+ὰ
+ά
+ὲ
+έ
+ὴ
+ή
+ὶ
+ί
+ὸ
+ό
+ὺ
+ύ
+ὼ
+ώ
+ᾀ
+ᾁ
+ᾂ
+ᾃ
+ᾄ
+ᾅ
+ᾆ
+ᾇ
+ᾐ
+ᾑ
+ᾒ
+ᾓ
+ᾔ
+ᾕ
+ᾖ
+ᾗ
+ᾠ
+ᾡ
+ᾢ
+ᾣ
+ᾤ
+ᾥ
+ᾦ
+ᾧ
+ᾰ
+ᾱ
+ᾲ
+ᾳ
+ᾴ
+ᾶ
+ᾷ
+ᾰ
+ᾱ
+ὰ
+ά
+ι
+ῂ
+ῃ
+ῄ
+ῆ
+ῇ
+ὲ
+έ
+ὴ
+ή
+ῐ
+ῑ
+ῒ
+ΐ
+ῖ
+ῗ
+ῐ
+ῑ
+ὶ
+ί
+ῠ
+ῡ
+ῢ
+ΰ
+ῤ
+ῥ
+ῦ
+ῧ
+ῠ
+ῡ
+ὺ
+ύ
+ῥ
+ῲ
+ῳ
+ῴ
+ῶ
+ῷ
+ὸ
+ό
+ὼ
+ώ
+ⁱ
+ⁿ
+ℂ
+ℇ
+ℊ
+ℋ
+ℌ
+ℍ
+ℎ
+ℏ
+ℐ
+ℑ
+ℒ
+ℓ
+ℕ
+ℙ
+ℚ
+ℛ
+ℜ
+ℝ
+ℤ
+ℨ
+k
+ℬ
+ℭ
+ℯ
+ℰ
+ℱ
+ℳ
+ℴ
+ℹ
+ℽ
+ℾ
+ℿ
+ⅅ
+ⅆ
+ⅇ
+ⅈ
+ⅉ
+ff
+fi
+fl
+ffi
+ffl
+ſt
+st
+ﬓ
+ﬔ
+ﬕ
+ﬖ
+ﬗ
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+𐐨
+𐐩
+𐐪
+𐐫
+𐐬
+𐐭
+𐐮
+𐐯
+𐐰
+𐐱
+𐐲
+𐐳
+𐐴
+𐐵
+𐐶
+𐐷
+𐐸
+𐐹
+𐐺
+𐐻
+𐐼
+𐐽
+𐐾
+𐐿
+𐑀
+𐑁
+𐑂
+𐑃
+𐑄
+𐑅
+𐑆
+𐑇
+𐑈
+𐑉
+𐑊
+𐑋
+𐑌
+𐑍
+𐑎
+𐑏
+𐐨
+𐐩
+𐐪
+𐐫
+𐐬
+𐐭
+𐐮
+𐐯
+𐐰
+𐐱
+𐐲
+𐐳
+𐐴
+𐐵
+𐐶
+𐐷
+𐐸
+𐐹
+𐐺
+𐐻
+𐐼
+𐐽
+𐐾
+𐐿
+𐑀
+𐑁
+𐑂
+𐑃
+𐑄
+𐑅
+𐑆
+𐑇
+𐑈
+𐑉
+𐑊
+𐑋
+𐑌
+𐑍
+𐑎
+𐑏
+𝐀
+𝐁
+𝐂
+𝐃
+𝐄
+𝐅
+𝐆
+𝐇
+𝐈
+𝐉
+𝐊
+𝐋
+𝐌
+𝐍
+𝐎
+𝐏
+𝐐
+𝐑
+𝐒
+𝐓
+𝐔
+𝐕
+𝐖
+𝐗
+𝐘
+𝐙
+𝐚
+𝐛
+𝐜
+𝐝
+𝐞
+𝐟
+𝐠
+𝐡
+𝐢
+𝐣
+𝐤
+𝐥
+𝐦
+𝐧
+𝐨
+𝐩
+𝐪
+𝐫
+𝐬
+𝐭
+𝐮
+𝐯
+𝐰
+𝐱
+𝐲
+𝐳
+𝐴
+𝐵
+𝐶
+𝐷
+𝐸
+𝐹
+𝐺
+𝐻
+𝐼
+𝐽
+𝐾
+𝐿
+𝑀
+𝑁
+𝑂
+𝑃
+𝑄
+𝑅
+𝑆
+𝑇
+𝑈
+𝑉
+𝑊
+𝑋
+𝑌
+𝑍
+𝑎
+𝑏
+𝑐
+𝑑
+𝑒
+𝑓
+𝑔
+𝑖
+𝑗
+𝑘
+𝑙
+𝑚
+𝑛
+𝑜
+𝑝
+𝑞
+𝑟
+𝑠
+𝑡
+𝑢
+𝑣
+𝑤
+𝑥
+𝑦
+𝑧
+𝑨
+𝑩
+𝑪
+𝑫
+𝑬
+𝑭
+𝑮
+𝑯
+𝑰
+𝑱
+𝑲
+𝑳
+𝑴
+𝑵
+𝑶
+𝑷
+𝑸
+𝑹
+𝑺
+𝑻
+𝑼
+𝑽
+𝑾
+𝑿
+𝒀
+𝒁
+𝒂
+𝒃
+𝒄
+𝒅
+𝒆
+𝒇
+𝒈
+𝒉
+𝒊
+𝒋
+𝒌
+𝒍
+𝒎
+𝒏
+𝒐
+𝒑
+𝒒
+𝒓
+𝒔
+𝒕
+𝒖
+𝒗
+𝒘
+𝒙
+𝒚
+𝒛
+𝒜
+𝒞
+𝒟
+𝒢
+𝒥
+𝒦
+𝒩
+𝒪
+𝒫
+𝒬
+𝒮
+𝒯
+𝒰
+𝒱
+𝒲
+𝒳
+𝒴
+𝒵
+𝒶
+𝒷
+𝒸
+𝒹
+𝒻
+𝒽
+𝒾
+𝒿
+𝓀
+𝓁
+𝓂
+𝓃
+𝓅
+𝓆
+𝓇
+𝓈
+𝓉
+𝓊
+𝓋
+𝓌
+𝓍
+𝓎
+𝓏
+𝓐
+𝓑
+𝓒
+𝓓
+𝓔
+𝓕
+𝓖
+𝓗
+𝓘
+𝓙
+𝓚
+𝓛
+𝓜
+𝓝
+𝓞
+𝓟
+𝓠
+𝓡
+𝓢
+𝓣
+𝓤
+𝓥
+𝓦
+𝓧
+𝓨
+𝓩
+𝓪
+𝓫
+𝓬
+𝓭
+𝓮
+𝓯
+𝓰
+𝓱
+𝓲
+𝓳
+𝓴
+𝓵
+𝓶
+𝓷
+𝓸
+𝓹
+𝓺
+𝓻
+𝓼
+𝓽
+𝓾
+𝓿
+𝔀
+𝔁
+𝔂
+𝔃
+𝔄
+𝔅
+𝔇
+𝔈
+𝔉
+𝔊
+𝔍
+𝔎
+𝔏
+𝔐
+𝔑
+𝔒
+𝔓
+𝔔
+𝔖
+𝔗
+𝔘
+𝔙
+𝔚
+𝔛
+𝔜
+𝔞
+𝔟
+𝔠
+𝔡
+𝔢
+𝔣
+𝔤
+𝔥
+𝔦
+𝔧
+𝔨
+𝔩
+𝔪
+𝔫
+𝔬
+𝔭
+𝔮
+𝔯
+𝔰
+𝔱
+𝔲
+𝔳
+𝔴
+𝔵
+𝔶
+𝔷
+𝔸
+𝔹
+𝔻
+𝔼
+𝔽
+𝔾
+𝕀
+𝕁
+𝕂
+𝕃
+𝕄
+𝕆
+𝕊
+𝕋
+𝕌
+𝕍
+𝕎
+𝕏
+𝕐
+𝕒
+𝕓
+𝕔
+𝕕
+𝕖
+𝕗
+𝕘
+𝕙
+𝕚
+𝕛
+𝕜
+𝕝
+𝕞
+𝕟
+𝕠
+𝕡
+𝕢
+𝕣
+𝕤
+𝕥
+𝕦
+𝕧
+𝕨
+𝕩
+𝕪
+𝕫
+𝕬
+𝕭
+𝕮
+𝕯
+𝕰
+𝕱
+𝕲
+𝕳
+𝕴
+𝕵
+𝕶
+𝕷
+𝕸
+𝕹
+𝕺
+𝕻
+𝕼
+𝕽
+𝕾
+𝕿
+𝖀
+𝖁
+𝖂
+𝖃
+𝖄
+𝖅
+𝖆
+𝖇
+𝖈
+𝖉
+𝖊
+𝖋
+𝖌
+𝖍
+𝖎
+𝖏
+𝖐
+𝖑
+𝖒
+𝖓
+𝖔
+𝖕
+𝖖
+𝖗
+𝖘
+𝖙
+𝖚
+𝖛
+𝖜
+𝖝
+𝖞
+𝖟
+𝖠
+𝖡
+𝖢
+𝖣
+𝖤
+𝖥
+𝖦
+𝖧
+𝖨
+𝖩
+𝖪
+𝖫
+𝖬
+𝖭
+𝖮
+𝖯
+𝖰
+𝖱
+𝖲
+𝖳
+𝖴
+𝖵
+𝖶
+𝖷
+𝖸
+𝖹
+𝖺
+𝖻
+𝖼
+𝖽
+𝖾
+𝖿
+𝗀
+𝗁
+𝗂
+𝗃
+𝗄
+𝗅
+𝗆
+𝗇
+𝗈
+𝗉
+𝗊
+𝗋
+𝗌
+𝗍
+𝗎
+𝗏
+𝗐
+𝗑
+𝗒
+𝗓
+𝗔
+𝗕
+𝗖
+𝗗
+𝗘
+𝗙
+𝗚
+𝗛
+𝗜
+𝗝
+𝗞
+𝗟
+𝗠
+𝗡
+𝗢
+𝗣
+𝗤
+𝗥
+𝗦
+𝗧
+𝗨
+𝗩
+𝗪
+𝗫
+𝗬
+𝗭
+𝗮
+𝗯
+𝗰
+𝗱
+𝗲
+𝗳
+𝗴
+𝗵
+𝗶
+𝗷
+𝗸
+𝗹
+𝗺
+𝗻
+𝗼
+𝗽
+𝗾
+𝗿
+𝘀
+𝘁
+𝘂
+𝘃
+𝘄
+𝘅
+𝘆
+𝘇
+𝘈
+𝘉
+𝘊
+𝘋
+𝘌
+𝘍
+𝘎
+𝘏
+𝘐
+𝘑
+𝘒
+𝘓
+𝘔
+𝘕
+𝘖
+𝘗
+𝘘
+𝘙
+𝘚
+𝘛
+𝘜
+𝘝
+𝘞
+𝘟
+𝘠
+𝘡
+𝘢
+𝘣
+𝘤
+𝘥
+𝘦
+𝘧
+𝘨
+𝘩
+𝘪
+𝘫
+𝘬
+𝘭
+𝘮
+𝘯
+𝘰
+𝘱
+𝘲
+𝘳
+𝘴
+𝘵
+𝘶
+𝘷
+𝘸
+𝘹
+𝘺
+𝘻
+𝘼
+𝘽
+𝘾
+𝘿
+𝙀
+𝙁
+𝙂
+𝙃
+𝙄
+𝙅
+𝙆
+𝙇
+𝙈
+𝙉
+𝙊
+𝙋
+𝙌
+𝙍
+𝙎
+𝙏
+𝙐
+𝙑
+𝙒
+𝙓
+𝙔
+𝙕
+𝙖
+𝙗
+𝙘
+𝙙
+𝙚
+𝙛
+𝙜
+𝙝
+𝙞
+𝙟
+𝙠
+𝙡
+𝙢
+𝙣
+𝙤
+𝙥
+𝙦
+𝙧
+𝙨
+𝙩
+𝙪
+𝙫
+𝙬
+𝙭
+𝙮
+𝙯
+𝙰
+𝙱
+𝙲
+𝙳
+𝙴
+𝙵
+𝙶
+𝙷
+𝙸
+𝙹
+𝙺
+𝙻
+𝙼
+𝙽
+𝙾
+𝙿
+𝚀
+𝚁
+𝚂
+𝚃
+𝚄
+𝚅
+𝚆
+𝚇
+𝚈
+𝚉
+𝚊
+𝚋
+𝚌
+𝚍
+𝚎
+𝚏
+𝚐
+𝚑
+𝚒
+𝚓
+𝚔
+𝚕
+𝚖
+𝚗
+𝚘
+𝚙
+𝚚
+𝚛
+𝚜
+𝚝
+𝚞
+𝚟
+𝚠
+𝚡
+𝚢
+𝚣
+𝚨
+𝚩
+𝚪
+𝚫
+𝚬
+𝚭
+𝚮
+𝚯
+𝚰
+𝚱
+𝚲
+𝚳
+𝚴
+𝚵
+𝚶
+𝚷
+𝚸
+𝚹
+𝚺
+𝚻
+𝚼
+𝚽
+𝚾
+𝚿
+𝛀
+𝛂
+𝛃
+𝛄
+𝛅
+𝛆
+𝛇
+𝛈
+𝛉
+𝛊
+𝛋
+𝛌
+𝛍
+𝛎
+𝛏
+𝛐
+𝛑
+𝛒
+𝛓
+𝛔
+𝛕
+𝛖
+𝛗
+𝛘
+𝛙
+𝛚
+𝛜
+𝛝
+𝛞
+𝛟
+𝛠
+𝛡
+𝛢
+𝛣
+𝛤
+𝛥
+𝛦
+𝛧
+𝛨
+𝛩
+𝛪
+𝛫
+𝛬
+𝛭
+𝛮
+𝛯
+𝛰
+𝛱
+𝛲
+𝛳
+𝛴
+𝛵
+𝛶
+𝛷
+𝛸
+𝛹
+𝛺
+𝛼
+𝛽
+𝛾
+𝛿
+𝜀
+𝜁
+𝜂
+𝜃
+𝜄
+𝜅
+𝜆
+𝜇
+𝜈
+𝜉
+𝜊
+𝜋
+𝜌
+𝜍
+𝜎
+𝜏
+𝜐
+𝜑
+𝜒
+𝜓
+𝜔
+𝜖
+𝜗
+𝜘
+𝜙
+𝜚
+𝜛
+𝜜
+𝜝
+𝜞
+𝜟
+𝜠
+𝜡
+𝜢
+𝜣
+𝜤
+𝜥
+𝜦
+𝜧
+𝜨
+𝜩
+𝜪
+𝜫
+𝜬
+𝜭
+𝜮
+𝜯
+𝜰
+𝜱
+𝜲
+𝜳
+𝜴
+𝜶
+𝜷
+𝜸
+𝜹
+𝜺
+𝜻
+𝜼
+𝜽
+𝜾
+𝜿
+𝝀
+𝝁
+𝝂
+𝝃
+𝝄
+𝝅
+𝝆
+𝝇
+𝝈
+𝝉
+𝝊
+𝝋
+𝝌
+𝝍
+𝝎
+𝝐
+𝝑
+𝝒
+𝝓
+𝝔
+𝝕
+𝝖
+𝝗
+𝝘
+𝝙
+𝝚
+𝝛
+𝝜
+𝝝
+𝝞
+𝝟
+𝝠
+𝝡
+𝝢
+𝝣
+𝝤
+𝝥
+𝝦
+𝝧
+𝝨
+𝝩
+𝝪
+𝝫
+𝝬
+𝝭
+𝝮
+𝝰
+𝝱
+𝝲
+𝝳
+𝝴
+𝝵
+𝝶
+𝝷
+𝝸
+𝝹
+𝝺
+𝝻
+𝝼
+𝝽
+𝝾
+𝝿
+𝞀
+𝞁
+𝞂
+𝞃
+𝞄
+𝞅
+𝞆
+𝞇
+𝞈
+𝞊
+𝞋
+𝞌
+𝞍
+𝞎
+𝞏
+𝞐
+𝞑
+𝞒
+𝞓
+𝞔
+𝞕
+𝞖
+𝞗
+𝞘
+𝞙
+𝞚
+𝞛
+𝞜
+𝞝
+𝞞
+𝞟
+𝞠
+𝞡
+𝞢
+𝞣
+𝞤
+𝞥
+𝞦
+𝞧
+𝞨
+𝞪
+𝞫
+𝞬
+𝞭
+𝞮
+𝞯
+𝞰
+𝞱
+𝞲
+𝞳
+𝞴
+𝞵
+𝞶
+𝞷
+𝞸
+𝞹
+𝞺
+𝞻
+𝞼
+𝞽
+𝞾
+𝞿
+𝟀
+𝟁
+𝟂
+𝟄
+𝟅
+𝟆
+𝟇
+𝟈
+𝟉
diff --git a/lowercasing_test/src/tests/lowercasing/ref.txt.java8u20 b/lowercasing_test/src/tests/lowercasing/ref.txt.java8u20
new file mode 100644
index 00000000000..6405132117d
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/ref.txt.java8u20
@@ -0,0 +1,2605 @@
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+ÿ
+i̇
+ÿ
+ſ
+ƿ
+ƿ
+ǿ
+ǿ
+ɿ
+ο
+ο
+п
+п
+ѿ
+ѿ
+ҿ
+ҿ
+տ
+տ
+ⴀ
+ⴁ
+ⴂ
+ⴃ
+ⴄ
+ⴅ
+ⴆ
+ⴇ
+ⴈ
+ⴉ
+ⴊ
+ⴋ
+ⴌ
+ⴍ
+ⴎ
+ⴏ
+ⴐ
+ⴑ
+ⴒ
+ⴓ
+ⴔ
+ⴕ
+ⴖ
+ⴗ
+ⴘ
+ⴙ
+ⴚ
+ⴛ
+ⴜ
+ⴝ
+ⴞ
+ⴟ
+ⴠ
+ⴡ
+ⴢ
+ⴣ
+ⴤ
+ⴥ
+ᴀ
+ᴁ
+ᴂ
+ᴃ
+ᴄ
+ᴅ
+ᴆ
+ᴇ
+ᴈ
+ᴉ
+ᴊ
+ᴋ
+ᴌ
+ᴍ
+ᴎ
+ᴏ
+ᴐ
+ᴑ
+ᴒ
+ᴓ
+ᴔ
+ᴕ
+ᴖ
+ᴗ
+ᴘ
+ᴙ
+ᴚ
+ᴛ
+ᴜ
+ᴝ
+ᴞ
+ᴟ
+ᴠ
+ᴡ
+ᴢ
+ᴣ
+ᴤ
+ᴥ
+ᴦ
+ᴧ
+ᴨ
+ᴩ
+ᴪ
+ᴫ
+ᵢ
+ᵣ
+ᵤ
+ᵥ
+ᵦ
+ᵧ
+ᵨ
+ᵩ
+ᵪ
+ᵫ
+ḁ
+ḁ
+ḃ
+ḃ
+ḅ
+ḅ
+ḇ
+ḇ
+ḉ
+ḉ
+ḋ
+ḋ
+ḍ
+ḍ
+ḏ
+ḏ
+ḑ
+ḑ
+ḓ
+ḓ
+ḕ
+ḕ
+ḗ
+ḗ
+ḙ
+ḙ
+ḛ
+ḛ
+ḝ
+ḝ
+ḟ
+ḟ
+ḡ
+ḡ
+ḣ
+ḣ
+ḥ
+ḥ
+ḧ
+ḧ
+ḩ
+ḩ
+ḫ
+ḫ
+ḭ
+ḭ
+ḯ
+ḯ
+ḱ
+ḱ
+ḳ
+ḳ
+ḵ
+ḵ
+ḷ
+ḷ
+ḹ
+ḹ
+ḻ
+ḻ
+ḽ
+ḽ
+ḿ
+ḿ
+ṁ
+ṁ
+ṃ
+ṃ
+ṅ
+ṅ
+ṇ
+ṇ
+ṉ
+ṉ
+ṋ
+ṋ
+ṍ
+ṍ
+ṏ
+ṏ
+ṑ
+ṑ
+ṓ
+ṓ
+ṕ
+ṕ
+ṗ
+ṗ
+ṙ
+ṙ
+ṛ
+ṛ
+ṝ
+ṝ
+ṟ
+ṟ
+ṡ
+ṡ
+ṣ
+ṣ
+ṥ
+ṥ
+ṧ
+ṧ
+ṩ
+ṩ
+ṫ
+ṫ
+ṭ
+ṭ
+ṯ
+ṯ
+ṱ
+ṱ
+ṳ
+ṳ
+ṵ
+ṵ
+ṷ
+ṷ
+ṹ
+ṹ
+ṻ
+ṻ
+ṽ
+ṽ
+ṿ
+ṿ
+ẁ
+ẁ
+ẃ
+ẃ
+ẅ
+ẅ
+ẇ
+ẇ
+ẉ
+ẉ
+ẋ
+ẋ
+ẍ
+ẍ
+ẏ
+ẏ
+ẑ
+ẑ
+ẓ
+ẓ
+ẕ
+ẕ
+ẖ
+ẗ
+ẘ
+ẙ
+ẚ
+ẛ
+ạ
+ạ
+ả
+ả
+ấ
+ấ
+ầ
+ầ
+ẩ
+ẩ
+ẫ
+ẫ
+ậ
+ậ
+ắ
+ắ
+ằ
+ằ
+ẳ
+ẳ
+ẵ
+ẵ
+ặ
+ặ
+ẹ
+ẹ
+ẻ
+ẻ
+ẽ
+ẽ
+ế
+ế
+ề
+ề
+ể
+ể
+ễ
+ễ
+ệ
+ệ
+ỉ
+ỉ
+ị
+ị
+ọ
+ọ
+ỏ
+ỏ
+ố
+ố
+ồ
+ồ
+ổ
+ổ
+ỗ
+ỗ
+ộ
+ộ
+ớ
+ớ
+ờ
+ờ
+ở
+ở
+ỡ
+ỡ
+ợ
+ợ
+ụ
+ụ
+ủ
+ủ
+ứ
+ứ
+ừ
+ừ
+ử
+ử
+ữ
+ữ
+ự
+ự
+ỳ
+ỳ
+ỵ
+ỵ
+ỷ
+ỷ
+ỹ
+ỹ
+ἀ
+ἁ
+ἂ
+ἃ
+ἄ
+ἅ
+ἆ
+ἇ
+ἀ
+ἁ
+ἂ
+ἃ
+ἄ
+ἅ
+ἆ
+ἇ
+ἐ
+ἑ
+ἒ
+ἓ
+ἔ
+ἕ
+ἐ
+ἑ
+ἒ
+ἓ
+ἔ
+ἕ
+ἠ
+ἡ
+ἢ
+ἣ
+ἤ
+ἥ
+ἦ
+ἧ
+ἠ
+ἡ
+ἢ
+ἣ
+ἤ
+ἥ
+ἦ
+ἧ
+ἰ
+ἱ
+ἲ
+ἳ
+ἴ
+ἵ
+ἶ
+ἷ
+ἰ
+ἱ
+ἲ
+ἳ
+ἴ
+ἵ
+ἶ
+ἷ
+ὀ
+ὁ
+ὂ
+ὃ
+ὄ
+ὅ
+ὀ
+ὁ
+ὂ
+ὃ
+ὄ
+ὅ
+ὐ
+ὑ
+ὒ
+ὓ
+ὔ
+ὕ
+ὖ
+ὗ
+ὑ
+ὓ
+ὕ
+ὗ
+ὠ
+ὡ
+ὢ
+ὣ
+ὤ
+ὥ
+ὦ
+ὧ
+ὠ
+ὡ
+ὢ
+ὣ
+ὤ
+ὥ
+ὦ
+ὧ
+ὰ
+ά
+ὲ
+έ
+ὴ
+ή
+ὶ
+ί
+ὸ
+ό
+ὺ
+ύ
+ὼ
+ώ
+ᾀ
+ᾁ
+ᾂ
+ᾃ
+ᾄ
+ᾅ
+ᾆ
+ᾇ
+ᾐ
+ᾑ
+ᾒ
+ᾓ
+ᾔ
+ᾕ
+ᾖ
+ᾗ
+ᾠ
+ᾡ
+ᾢ
+ᾣ
+ᾤ
+ᾥ
+ᾦ
+ᾧ
+ᾰ
+ᾱ
+ᾲ
+ᾳ
+ᾴ
+ᾶ
+ᾷ
+ᾰ
+ᾱ
+ὰ
+ά
+ι
+ῂ
+ῃ
+ῄ
+ῆ
+ῇ
+ὲ
+έ
+ὴ
+ή
+ῐ
+ῑ
+ῒ
+ΐ
+ῖ
+ῗ
+ῐ
+ῑ
+ὶ
+ί
+ῠ
+ῡ
+ῢ
+ΰ
+ῤ
+ῥ
+ῦ
+ῧ
+ῠ
+ῡ
+ὺ
+ύ
+ῥ
+ῲ
+ῳ
+ῴ
+ῶ
+ῷ
+ὸ
+ό
+ὼ
+ώ
+ⁱ
+ⁿ
+ℂ
+ℇ
+ℊ
+ℋ
+ℌ
+ℍ
+ℎ
+ℏ
+ℐ
+ℑ
+ℒ
+ℓ
+ℕ
+ℙ
+ℚ
+ℛ
+ℜ
+ℝ
+ℤ
+ℨ
+k
+ℬ
+ℭ
+ℯ
+ℰ
+ℱ
+ℳ
+ℴ
+ℹ
+ℽ
+ℾ
+ℿ
+ⅅ
+ⅆ
+ⅇ
+ⅈ
+ⅉ
+ff
+fi
+fl
+ffi
+ffl
+ſt
+st
+ﬓ
+ﬔ
+ﬕ
+ﬖ
+ﬗ
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+a
+b
+c
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
+𐐨
+𐐩
+𐐪
+𐐫
+𐐬
+𐐭
+𐐮
+𐐯
+𐐰
+𐐱
+𐐲
+𐐳
+𐐴
+𐐵
+𐐶
+𐐷
+𐐸
+𐐹
+𐐺
+𐐻
+𐐼
+𐐽
+𐐾
+𐐿
+𐑀
+𐑁
+𐑂
+𐑃
+𐑄
+𐑅
+𐑆
+𐑇
+𐑈
+𐑉
+𐑊
+𐑋
+𐑌
+𐑍
+𐑎
+𐑏
+𐐨
+𐐩
+𐐪
+𐐫
+𐐬
+𐐭
+𐐮
+𐐯
+𐐰
+𐐱
+𐐲
+𐐳
+𐐴
+𐐵
+𐐶
+𐐷
+𐐸
+𐐹
+𐐺
+𐐻
+𐐼
+𐐽
+𐐾
+𐐿
+𐑀
+𐑁
+𐑂
+𐑃
+𐑄
+𐑅
+𐑆
+𐑇
+𐑈
+𐑉
+𐑊
+𐑋
+𐑌
+𐑍
+𐑎
+𐑏
+𝐀
+𝐁
+𝐂
+𝐃
+𝐄
+𝐅
+𝐆
+𝐇
+𝐈
+𝐉
+𝐊
+𝐋
+𝐌
+𝐍
+𝐎
+𝐏
+𝐐
+𝐑
+𝐒
+𝐓
+𝐔
+𝐕
+𝐖
+𝐗
+𝐘
+𝐙
+𝐚
+𝐛
+𝐜
+𝐝
+𝐞
+𝐟
+𝐠
+𝐡
+𝐢
+𝐣
+𝐤
+𝐥
+𝐦
+𝐧
+𝐨
+𝐩
+𝐪
+𝐫
+𝐬
+𝐭
+𝐮
+𝐯
+𝐰
+𝐱
+𝐲
+𝐳
+𝐴
+𝐵
+𝐶
+𝐷
+𝐸
+𝐹
+𝐺
+𝐻
+𝐼
+𝐽
+𝐾
+𝐿
+𝑀
+𝑁
+𝑂
+𝑃
+𝑄
+𝑅
+𝑆
+𝑇
+𝑈
+𝑉
+𝑊
+𝑋
+𝑌
+𝑍
+𝑎
+𝑏
+𝑐
+𝑑
+𝑒
+𝑓
+𝑔
+𝑖
+𝑗
+𝑘
+𝑙
+𝑚
+𝑛
+𝑜
+𝑝
+𝑞
+𝑟
+𝑠
+𝑡
+𝑢
+𝑣
+𝑤
+𝑥
+𝑦
+𝑧
+𝑨
+𝑩
+𝑪
+𝑫
+𝑬
+𝑭
+𝑮
+𝑯
+𝑰
+𝑱
+𝑲
+𝑳
+𝑴
+𝑵
+𝑶
+𝑷
+𝑸
+𝑹
+𝑺
+𝑻
+𝑼
+𝑽
+𝑾
+𝑿
+𝒀
+𝒁
+𝒂
+𝒃
+𝒄
+𝒅
+𝒆
+𝒇
+𝒈
+𝒉
+𝒊
+𝒋
+𝒌
+𝒍
+𝒎
+𝒏
+𝒐
+𝒑
+𝒒
+𝒓
+𝒔
+𝒕
+𝒖
+𝒗
+𝒘
+𝒙
+𝒚
+𝒛
+𝒜
+𝒞
+𝒟
+𝒢
+𝒥
+𝒦
+𝒩
+𝒪
+𝒫
+𝒬
+𝒮
+𝒯
+𝒰
+𝒱
+𝒲
+𝒳
+𝒴
+𝒵
+𝒶
+𝒷
+𝒸
+𝒹
+𝒻
+𝒽
+𝒾
+𝒿
+𝓀
+𝓁
+𝓂
+𝓃
+𝓅
+𝓆
+𝓇
+𝓈
+𝓉
+𝓊
+𝓋
+𝓌
+𝓍
+𝓎
+𝓏
+𝓐
+𝓑
+𝓒
+𝓓
+𝓔
+𝓕
+𝓖
+𝓗
+𝓘
+𝓙
+𝓚
+𝓛
+𝓜
+𝓝
+𝓞
+𝓟
+𝓠
+𝓡
+𝓢
+𝓣
+𝓤
+𝓥
+𝓦
+𝓧
+𝓨
+𝓩
+𝓪
+𝓫
+𝓬
+𝓭
+𝓮
+𝓯
+𝓰
+𝓱
+𝓲
+𝓳
+𝓴
+𝓵
+𝓶
+𝓷
+𝓸
+𝓹
+𝓺
+𝓻
+𝓼
+𝓽
+𝓾
+𝓿
+𝔀
+𝔁
+𝔂
+𝔃
+𝔄
+𝔅
+𝔇
+𝔈
+𝔉
+𝔊
+𝔍
+𝔎
+𝔏
+𝔐
+𝔑
+𝔒
+𝔓
+𝔔
+𝔖
+𝔗
+𝔘
+𝔙
+𝔚
+𝔛
+𝔜
+𝔞
+𝔟
+𝔠
+𝔡
+𝔢
+𝔣
+𝔤
+𝔥
+𝔦
+𝔧
+𝔨
+𝔩
+𝔪
+𝔫
+𝔬
+𝔭
+𝔮
+𝔯
+𝔰
+𝔱
+𝔲
+𝔳
+𝔴
+𝔵
+𝔶
+𝔷
+𝔸
+𝔹
+𝔻
+𝔼
+𝔽
+𝔾
+𝕀
+𝕁
+𝕂
+𝕃
+𝕄
+𝕆
+𝕊
+𝕋
+𝕌
+𝕍
+𝕎
+𝕏
+𝕐
+𝕒
+𝕓
+𝕔
+𝕕
+𝕖
+𝕗
+𝕘
+𝕙
+𝕚
+𝕛
+𝕜
+𝕝
+𝕞
+𝕟
+𝕠
+𝕡
+𝕢
+𝕣
+𝕤
+𝕥
+𝕦
+𝕧
+𝕨
+𝕩
+𝕪
+𝕫
+𝕬
+𝕭
+𝕮
+𝕯
+𝕰
+𝕱
+𝕲
+𝕳
+𝕴
+𝕵
+𝕶
+𝕷
+𝕸
+𝕹
+𝕺
+𝕻
+𝕼
+𝕽
+𝕾
+𝕿
+𝖀
+𝖁
+𝖂
+𝖃
+𝖄
+𝖅
+𝖆
+𝖇
+𝖈
+𝖉
+𝖊
+𝖋
+𝖌
+𝖍
+𝖎
+𝖏
+𝖐
+𝖑
+𝖒
+𝖓
+𝖔
+𝖕
+𝖖
+𝖗
+𝖘
+𝖙
+𝖚
+𝖛
+𝖜
+𝖝
+𝖞
+𝖟
+𝖠
+𝖡
+𝖢
+𝖣
+𝖤
+𝖥
+𝖦
+𝖧
+𝖨
+𝖩
+𝖪
+𝖫
+𝖬
+𝖭
+𝖮
+𝖯
+𝖰
+𝖱
+𝖲
+𝖳
+𝖴
+𝖵
+𝖶
+𝖷
+𝖸
+𝖹
+𝖺
+𝖻
+𝖼
+𝖽
+𝖾
+𝖿
+𝗀
+𝗁
+𝗂
+𝗃
+𝗄
+𝗅
+𝗆
+𝗇
+𝗈
+𝗉
+𝗊
+𝗋
+𝗌
+𝗍
+𝗎
+𝗏
+𝗐
+𝗑
+𝗒
+𝗓
+𝗔
+𝗕
+𝗖
+𝗗
+𝗘
+𝗙
+𝗚
+𝗛
+𝗜
+𝗝
+𝗞
+𝗟
+𝗠
+𝗡
+𝗢
+𝗣
+𝗤
+𝗥
+𝗦
+𝗧
+𝗨
+𝗩
+𝗪
+𝗫
+𝗬
+𝗭
+𝗮
+𝗯
+𝗰
+𝗱
+𝗲
+𝗳
+𝗴
+𝗵
+𝗶
+𝗷
+𝗸
+𝗹
+𝗺
+𝗻
+𝗼
+𝗽
+𝗾
+𝗿
+𝘀
+𝘁
+𝘂
+𝘃
+𝘄
+𝘅
+𝘆
+𝘇
+𝘈
+𝘉
+𝘊
+𝘋
+𝘌
+𝘍
+𝘎
+𝘏
+𝘐
+𝘑
+𝘒
+𝘓
+𝘔
+𝘕
+𝘖
+𝘗
+𝘘
+𝘙
+𝘚
+𝘛
+𝘜
+𝘝
+𝘞
+𝘟
+𝘠
+𝘡
+𝘢
+𝘣
+𝘤
+𝘥
+𝘦
+𝘧
+𝘨
+𝘩
+𝘪
+𝘫
+𝘬
+𝘭
+𝘮
+𝘯
+𝘰
+𝘱
+𝘲
+𝘳
+𝘴
+𝘵
+𝘶
+𝘷
+𝘸
+𝘹
+𝘺
+𝘻
+𝘼
+𝘽
+𝘾
+𝘿
+𝙀
+𝙁
+𝙂
+𝙃
+𝙄
+𝙅
+𝙆
+𝙇
+𝙈
+𝙉
+𝙊
+𝙋
+𝙌
+𝙍
+𝙎
+𝙏
+𝙐
+𝙑
+𝙒
+𝙓
+𝙔
+𝙕
+𝙖
+𝙗
+𝙘
+𝙙
+𝙚
+𝙛
+𝙜
+𝙝
+𝙞
+𝙟
+𝙠
+𝙡
+𝙢
+𝙣
+𝙤
+𝙥
+𝙦
+𝙧
+𝙨
+𝙩
+𝙪
+𝙫
+𝙬
+𝙭
+𝙮
+𝙯
+𝙰
+𝙱
+𝙲
+𝙳
+𝙴
+𝙵
+𝙶
+𝙷
+𝙸
+𝙹
+𝙺
+𝙻
+𝙼
+𝙽
+𝙾
+𝙿
+𝚀
+𝚁
+𝚂
+𝚃
+𝚄
+𝚅
+𝚆
+𝚇
+𝚈
+𝚉
+𝚊
+𝚋
+𝚌
+𝚍
+𝚎
+𝚏
+𝚐
+𝚑
+𝚒
+𝚓
+𝚔
+𝚕
+𝚖
+𝚗
+𝚘
+𝚙
+𝚚
+𝚛
+𝚜
+𝚝
+𝚞
+𝚟
+𝚠
+𝚡
+𝚢
+𝚣
+𝚨
+𝚩
+𝚪
+𝚫
+𝚬
+𝚭
+𝚮
+𝚯
+𝚰
+𝚱
+𝚲
+𝚳
+𝚴
+𝚵
+𝚶
+𝚷
+𝚸
+𝚹
+𝚺
+𝚻
+𝚼
+𝚽
+𝚾
+𝚿
+𝛀
+𝛂
+𝛃
+𝛄
+𝛅
+𝛆
+𝛇
+𝛈
+𝛉
+𝛊
+𝛋
+𝛌
+𝛍
+𝛎
+𝛏
+𝛐
+𝛑
+𝛒
+𝛓
+𝛔
+𝛕
+𝛖
+𝛗
+𝛘
+𝛙
+𝛚
+𝛜
+𝛝
+𝛞
+𝛟
+𝛠
+𝛡
+𝛢
+𝛣
+𝛤
+𝛥
+𝛦
+𝛧
+𝛨
+𝛩
+𝛪
+𝛫
+𝛬
+𝛭
+𝛮
+𝛯
+𝛰
+𝛱
+𝛲
+𝛳
+𝛴
+𝛵
+𝛶
+𝛷
+𝛸
+𝛹
+𝛺
+𝛼
+𝛽
+𝛾
+𝛿
+𝜀
+𝜁
+𝜂
+𝜃
+𝜄
+𝜅
+𝜆
+𝜇
+𝜈
+𝜉
+𝜊
+𝜋
+𝜌
+𝜍
+𝜎
+𝜏
+𝜐
+𝜑
+𝜒
+𝜓
+𝜔
+𝜖
+𝜗
+𝜘
+𝜙
+𝜚
+𝜛
+𝜜
+𝜝
+𝜞
+𝜟
+𝜠
+𝜡
+𝜢
+𝜣
+𝜤
+𝜥
+𝜦
+𝜧
+𝜨
+𝜩
+𝜪
+𝜫
+𝜬
+𝜭
+𝜮
+𝜯
+𝜰
+𝜱
+𝜲
+𝜳
+𝜴
+𝜶
+𝜷
+𝜸
+𝜹
+𝜺
+𝜻
+𝜼
+𝜽
+𝜾
+𝜿
+𝝀
+𝝁
+𝝂
+𝝃
+𝝄
+𝝅
+𝝆
+𝝇
+𝝈
+𝝉
+𝝊
+𝝋
+𝝌
+𝝍
+𝝎
+𝝐
+𝝑
+𝝒
+𝝓
+𝝔
+𝝕
+𝝖
+𝝗
+𝝘
+𝝙
+𝝚
+𝝛
+𝝜
+𝝝
+𝝞
+𝝟
+𝝠
+𝝡
+𝝢
+𝝣
+𝝤
+𝝥
+𝝦
+𝝧
+𝝨
+𝝩
+𝝪
+𝝫
+𝝬
+𝝭
+𝝮
+𝝰
+𝝱
+𝝲
+𝝳
+𝝴
+𝝵
+𝝶
+𝝷
+𝝸
+𝝹
+𝝺
+𝝻
+𝝼
+𝝽
+𝝾
+𝝿
+𝞀
+𝞁
+𝞂
+𝞃
+𝞄
+𝞅
+𝞆
+𝞇
+𝞈
+𝞊
+𝞋
+𝞌
+𝞍
+𝞎
+𝞏
+𝞐
+𝞑
+𝞒
+𝞓
+𝞔
+𝞕
+𝞖
+𝞗
+𝞘
+𝞙
+𝞚
+𝞛
+𝞜
+𝞝
+𝞞
+𝞟
+𝞠
+𝞡
+𝞢
+𝞣
+𝞤
+𝞥
+𝞦
+𝞧
+𝞨
+𝞪
+𝞫
+𝞬
+𝞭
+𝞮
+𝞯
+𝞰
+𝞱
+𝞲
+𝞳
+𝞴
+𝞵
+𝞶
+𝞷
+𝞸
+𝞹
+𝞺
+𝞻
+𝞼
+𝞽
+𝞾
+𝞿
+𝟀
+𝟁
+𝟂
+𝟄
+𝟅
+𝟆
+𝟇
+𝟈
+𝟉
diff --git a/lowercasing_test/src/tests/lowercasing/ref.vespalib.txt.java8 b/lowercasing_test/src/tests/lowercasing/ref.vespalib.txt.java8
new file mode 100644
index 00000000000..d84ac779e33
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/ref.vespalib.txt.java8
@@ -0,0 +1,44 @@
+input(IJ,306,0x132), lower(IJ,306,0x132), ref(ij,307,0x133)
+input(Ŀ,319,0x13F), lower(Ŀ,319,0x13F), ref(ŀ,320,0x140)
+input(DŽ,452,0x1C4), lower(DŽ,452,0x1C4), ref(dž,454,0x1C6)
+input(LJ,455,0x1C7), lower(LJ,455,0x1C7), ref(lj,457,0x1C9)
+input(NJ,458,0x1CA), lower(NJ,458,0x1CA), ref(nj,460,0x1CC)
+input(DZ,497,0x1F1), lower(DZ,497,0x1F1), ref(dz,499,0x1F3)
+input(ϴ,1012,0x3F4), lower(ϴ,1012,0x3F4), ref(θ,952,0x3B8)
+input(Ϲ,1017,0x3F9), lower(Ϲ,1017,0x3F9), ref(ϲ,1010,0x3F2)
+input(Ά,8123,0x1FBB), lower(Ά,8123,0x1FBB), ref(ά,8049,0x1F71)
+input(Έ,8137,0x1FC9), lower(Έ,8137,0x1FC9), ref(έ,8051,0x1F73)
+input(Ή,8139,0x1FCB), lower(Ή,8139,0x1FCB), ref(ή,8053,0x1F75)
+input(Ί,8155,0x1FDB), lower(Ί,8155,0x1FDB), ref(ί,8055,0x1F77)
+input(Ύ,8171,0x1FEB), lower(Ύ,8171,0x1FEB), ref(ύ,8059,0x1F7B)
+input(Ό,8185,0x1FF9), lower(Ό,8185,0x1FF9), ref(ό,8057,0x1F79)
+input(Ώ,8187,0x1FFB), lower(Ώ,8187,0x1FFB), ref(ώ,8061,0x1F7D)
+input(Ω,8486,0x2126), lower(Ω,8486,0x2126), ref(ω,969,0x3C9)
+input(K,8490,0x212A), lower(K,8490,0x212A), ref(k,107,0x6B)
+input(Å,8491,0x212B), lower(Å,8491,0x212B), ref(å,229,0xE5)
+input(A,65313,0xFF21), lower(A,65313,0xFF21), ref(a,65345,0xFF41)
+input(B,65314,0xFF22), lower(B,65314,0xFF22), ref(b,65346,0xFF42)
+input(C,65315,0xFF23), lower(C,65315,0xFF23), ref(c,65347,0xFF43)
+input(D,65316,0xFF24), lower(D,65316,0xFF24), ref(d,65348,0xFF44)
+input(E,65317,0xFF25), lower(E,65317,0xFF25), ref(e,65349,0xFF45)
+input(F,65318,0xFF26), lower(F,65318,0xFF26), ref(f,65350,0xFF46)
+input(G,65319,0xFF27), lower(G,65319,0xFF27), ref(g,65351,0xFF47)
+input(H,65320,0xFF28), lower(H,65320,0xFF28), ref(h,65352,0xFF48)
+input(I,65321,0xFF29), lower(I,65321,0xFF29), ref(i,65353,0xFF49)
+input(J,65322,0xFF2A), lower(J,65322,0xFF2A), ref(j,65354,0xFF4A)
+input(K,65323,0xFF2B), lower(K,65323,0xFF2B), ref(k,65355,0xFF4B)
+input(L,65324,0xFF2C), lower(L,65324,0xFF2C), ref(l,65356,0xFF4C)
+input(M,65325,0xFF2D), lower(M,65325,0xFF2D), ref(m,65357,0xFF4D)
+input(N,65326,0xFF2E), lower(N,65326,0xFF2E), ref(n,65358,0xFF4E)
+input(O,65327,0xFF2F), lower(O,65327,0xFF2F), ref(o,65359,0xFF4F)
+input(P,65328,0xFF30), lower(P,65328,0xFF30), ref(p,65360,0xFF50)
+input(Q,65329,0xFF31), lower(Q,65329,0xFF31), ref(q,65361,0xFF51)
+input(R,65330,0xFF32), lower(R,65330,0xFF32), ref(r,65362,0xFF52)
+input(S,65331,0xFF33), lower(S,65331,0xFF33), ref(s,65363,0xFF53)
+input(T,65332,0xFF34), lower(T,65332,0xFF34), ref(t,65364,0xFF54)
+input(U,65333,0xFF35), lower(U,65333,0xFF35), ref(u,65365,0xFF55)
+input(V,65334,0xFF36), lower(V,65334,0xFF36), ref(v,65366,0xFF56)
+input(W,65335,0xFF37), lower(W,65335,0xFF37), ref(w,65367,0xFF57)
+input(X,65336,0xFF38), lower(X,65336,0xFF38), ref(x,65368,0xFF58)
+input(Y,65337,0xFF39), lower(Y,65337,0xFF39), ref(y,65369,0xFF59)
+input(Z,65338,0xFF3A), lower(Z,65338,0xFF3A), ref(z,65370,0xFF5A)
diff --git a/lowercasing_test/src/tests/lowercasing/ref.vespalib.txt.java8u20 b/lowercasing_test/src/tests/lowercasing/ref.vespalib.txt.java8u20
new file mode 100644
index 00000000000..d84ac779e33
--- /dev/null
+++ b/lowercasing_test/src/tests/lowercasing/ref.vespalib.txt.java8u20
@@ -0,0 +1,44 @@
+input(IJ,306,0x132), lower(IJ,306,0x132), ref(ij,307,0x133)
+input(Ŀ,319,0x13F), lower(Ŀ,319,0x13F), ref(ŀ,320,0x140)
+input(DŽ,452,0x1C4), lower(DŽ,452,0x1C4), ref(dž,454,0x1C6)
+input(LJ,455,0x1C7), lower(LJ,455,0x1C7), ref(lj,457,0x1C9)
+input(NJ,458,0x1CA), lower(NJ,458,0x1CA), ref(nj,460,0x1CC)
+input(DZ,497,0x1F1), lower(DZ,497,0x1F1), ref(dz,499,0x1F3)
+input(ϴ,1012,0x3F4), lower(ϴ,1012,0x3F4), ref(θ,952,0x3B8)
+input(Ϲ,1017,0x3F9), lower(Ϲ,1017,0x3F9), ref(ϲ,1010,0x3F2)
+input(Ά,8123,0x1FBB), lower(Ά,8123,0x1FBB), ref(ά,8049,0x1F71)
+input(Έ,8137,0x1FC9), lower(Έ,8137,0x1FC9), ref(έ,8051,0x1F73)
+input(Ή,8139,0x1FCB), lower(Ή,8139,0x1FCB), ref(ή,8053,0x1F75)
+input(Ί,8155,0x1FDB), lower(Ί,8155,0x1FDB), ref(ί,8055,0x1F77)
+input(Ύ,8171,0x1FEB), lower(Ύ,8171,0x1FEB), ref(ύ,8059,0x1F7B)
+input(Ό,8185,0x1FF9), lower(Ό,8185,0x1FF9), ref(ό,8057,0x1F79)
+input(Ώ,8187,0x1FFB), lower(Ώ,8187,0x1FFB), ref(ώ,8061,0x1F7D)
+input(Ω,8486,0x2126), lower(Ω,8486,0x2126), ref(ω,969,0x3C9)
+input(K,8490,0x212A), lower(K,8490,0x212A), ref(k,107,0x6B)
+input(Å,8491,0x212B), lower(Å,8491,0x212B), ref(å,229,0xE5)
+input(A,65313,0xFF21), lower(A,65313,0xFF21), ref(a,65345,0xFF41)
+input(B,65314,0xFF22), lower(B,65314,0xFF22), ref(b,65346,0xFF42)
+input(C,65315,0xFF23), lower(C,65315,0xFF23), ref(c,65347,0xFF43)
+input(D,65316,0xFF24), lower(D,65316,0xFF24), ref(d,65348,0xFF44)
+input(E,65317,0xFF25), lower(E,65317,0xFF25), ref(e,65349,0xFF45)
+input(F,65318,0xFF26), lower(F,65318,0xFF26), ref(f,65350,0xFF46)
+input(G,65319,0xFF27), lower(G,65319,0xFF27), ref(g,65351,0xFF47)
+input(H,65320,0xFF28), lower(H,65320,0xFF28), ref(h,65352,0xFF48)
+input(I,65321,0xFF29), lower(I,65321,0xFF29), ref(i,65353,0xFF49)
+input(J,65322,0xFF2A), lower(J,65322,0xFF2A), ref(j,65354,0xFF4A)
+input(K,65323,0xFF2B), lower(K,65323,0xFF2B), ref(k,65355,0xFF4B)
+input(L,65324,0xFF2C), lower(L,65324,0xFF2C), ref(l,65356,0xFF4C)
+input(M,65325,0xFF2D), lower(M,65325,0xFF2D), ref(m,65357,0xFF4D)
+input(N,65326,0xFF2E), lower(N,65326,0xFF2E), ref(n,65358,0xFF4E)
+input(O,65327,0xFF2F), lower(O,65327,0xFF2F), ref(o,65359,0xFF4F)
+input(P,65328,0xFF30), lower(P,65328,0xFF30), ref(p,65360,0xFF50)
+input(Q,65329,0xFF31), lower(Q,65329,0xFF31), ref(q,65361,0xFF51)
+input(R,65330,0xFF32), lower(R,65330,0xFF32), ref(r,65362,0xFF52)
+input(S,65331,0xFF33), lower(S,65331,0xFF33), ref(s,65363,0xFF53)
+input(T,65332,0xFF34), lower(T,65332,0xFF34), ref(t,65364,0xFF54)
+input(U,65333,0xFF35), lower(U,65333,0xFF35), ref(u,65365,0xFF55)
+input(V,65334,0xFF36), lower(V,65334,0xFF36), ref(v,65366,0xFF56)
+input(W,65335,0xFF37), lower(W,65335,0xFF37), ref(w,65367,0xFF57)
+input(X,65336,0xFF38), lower(X,65336,0xFF38), ref(x,65368,0xFF58)
+input(Y,65337,0xFF39), lower(Y,65337,0xFF39), ref(y,65369,0xFF59)
+input(Z,65338,0xFF3A), lower(Z,65338,0xFF3A), ref(z,65370,0xFF5A)