https://weblogs.java.net/blog/skelvin/archive/2006/01/natural_string.html
