1.12-4 -> 1.13-1
================
- added MatchOnlyRunAutomaton for fast substring matching - contributed by J. McCartney
- RegExp allows empty union/intersection branches, e.g. "(|a)", and rejects unescaped reserved characters, e.g. "*a" - contributed by D. Robertson
- fixed getFiniteStrings omitting the empty string and returning null for singleton automata with negative limits - reported by A. Omori, fixed by J. Park
- fixed year format in XML Schema date/time datatypes - thanks to S. Gregersen
- fixed getShortestExample for rejected strings
- fixed surrogate pair handling in shuffleSubsetOf
- fixed makeDecimalValue to accept all valid lexical forms, e.g. ".5" and "1."
- fixed makeIntegerValue and makeDecimalValue to accept any sign for zero, e.g. "-0" and "+0.0"
- fixed U+FEFF missing from the Specials block in Datatypes
- fixed unintended mutation of inputs or shared automata
- fixed RegExp.toString to escape ~ and to print negated character classes as [^...]
- fixed shuffleSubsetOf counterexamples that split surrogate pairs or suspended regions
- fixed toAutomatonAllowMutate leaving the mutation flag set on exceptions
- fixed NullPointerException in Datatypes.exists and Datatypes.get for unknown names (get now throws IllegalArgumentException)
- fixed Automaton.load losing transitions of some automata, e.g. non-minimized automata from regular expressions
- fixed isTotal for non-minimal automata
- fixed minus to always return a deterministic automaton as documented
- fixed complement not minimizing its result when minimize-always is set
- fixed equals after SpecialOperations.reverse and setInitialState (stale hash code)
- fixed compress and trim missing strings, in particular for nondeterministic automata
- fixed prefixClose for the empty language
- fixed projectChars for singleton automata
- fixed RegExp.toString for numerical intervals without a fixed number of digits
- fixed makeStringUnion failing with assertions enabled if the empty string is included
- fixed makeMinInteger rejecting larger numbers with more digits, e.g. 10 for minimum 3
- fixed makeMaxInteger accepting the empty string for maximum 0
- fixed makeTotalDigits and makeFractionDigits for decimals without integer digits, e.g. ".5"
- fixed Unicode category automata missing code points in ranges, e.g. most CJK ideographs and Hangul syllables
- fixed gDay datatype to require three leading hyphens
- fixed XML Schema integer datatypes to accept a plus sign and leading zeros, and decimal and float to accept e.g. "1." and ".5"
- build updates
- added randomized and metamorphic tests of all operations

1.12-3 -> 1.12-4
================
- re-enable Java 8 support - thanks to D. Lowe

1.12-2 -> 1.12-3
================
- upgrade to Java 11 - thanks to L.J. McGibbney

1.12-1 -> 1.12-2
================
- fixed RegExp.toString - thanks to A. Gargantini

1.11-8 -> 1.12-1
================
- added Valmari's minimization algorithm - contributed by S. Gregersen
- now supports Maven - thanks to S. Gregersen
- fixed missing check of 'minimize' option - thanks to V. Wuestholz
- fixed state naming for singleton automata - thanks to A.M.W. Younang and S. Gregersen
- RunAutomaton.setAlphabet now non-final - suggested by D. Lowe
- minor simplification of 'determinize' - suggested by V. Berchet

1.11-7 -> 1.11-8
================
- caching of isDebug, to avoid synchronized call to System.getProperty - thanks to G. Lundh

1.11-6 -> 1.11-7
================
- bug fix in Gibson's AutomatonMatcher - thanks to Y. Versley, D. Weiss, and D. Richardson

1.11-5 -> 1.11-6
================
- performance improvement in Automaton.isFinite - thanks to R. Muir

1.11-4 -> 1.11-5
================
- bug fix in Gibson's AutomatonMatcher - thanks to H-.M. Adorf and J. Gibson

1.11-3 -> 1.11-4
================
- bug fix and performance improvement in BasicOperations.concatenate - thanks to R. Muir

1.11-2 -> 1.11-3
================
- added Automaton.makeStringUnion (Daciuk et al.'s algorithm for constructing 
  a minimal automaton that accepts a union of strings) - contributed by D. Weiss
- added call to clearHashCode in Automaton.reduce - thanks to D. Weiss 
- minimization is now optional in RegExp.toAutomaton - suggested by H. Zauner
- SpecialOperations.reverse made public - suggested by D. Lowe

1.11-1 -> 1.11-2
================
- fixed bug in RegExp parser - thanks to A. Meyer

1.10-5 -> 1.11-1
================
- added AutomatonMatcher - contributed by J. Gibson
- fixed bug in SpecialOperations.overlap - thanks to D. Lutterkort

1.10-4 -> 1.10-5
================
- added RegExp.setAllowMutate (for thread safety)

1.10-3 -> 1.10-4
================
- fixed bug in recomputation of Automaton hash code

1.10-2 -> 1.10-3
================
- added Automaton method: getStrings
- added setAllowMutate method that controls whether operations are allowed
  to modify input automata
- fixed bug in regexp parser
- improved javadoc description of automaton representation

1.10-1 -> 1.10-2
================
- fixed bug in repeat(int,int) that was introduced in 1.9-1 - thanks to B. Lee

1.9-1 -> 1.10-1
===============
- added Datatypes class with lots of common regular languages 
  (was earlier placed in the dk.brics.schematools package)
- added DatatypesAutomatonProvider class so that regexps easily can use the datatypes
- added Automaton methods: 
    - makeMaxInteger
    - makeMinInteger
    - makeTotalDigits
    - makeFractionDigits
    - makeIntegerValue
    - makeDecimalValue
    - makeStringMatcher
    - prefixClose
    - hexCases
    - replaceWhitespace
- now allowing the empty regexp (which matches the empty string) in RegExp syntax
- intersection now works on nondeterministic automata without determinizing
- rewritten getShortestExample
- fixed bug in subsetOf for nondeterministic automata
- removed Makefile (use 'ant' instead)

1.8-8 -> 1.9-1
==============
- moved Automaton methods to other classes (BasicAutomata, BasicOperations, etc.)
- Automaton.toString now prints singleton automata as strings without expanding them
- Automaton.subsetOf rewritten to make it faster
- Automaton.run now works on nondeterministic automata without determinizing

1.8-7 -> 1.8-8
==============
- fixed bug in RunAutomaton.run(String,int) - thanks to J. Moran

1.8-6 -> 1.8-7
==============
- added AutomatonProvider for RegExp.toAutomaton

1.8-5 -> 1.8-6
==============
- fixed bug in subst(Map)

1.8-4 -> 1.8-5
==============
- added Automaton method: overlap
- fixed bug in concatenate(List<Automaton>)

1.8-3 -> 1.8-4
==============
- faster singleton mode for various automata operations
- added Automaton methods: 
    - minus
    - shuffleSubsetOf
    - isEmptyString

1.8-2 -> 1.8-3
==============
- faster construction of automata from large regexps
- improved performance of Automaton.repeat(int) and Automaton.repeat(int,int)

1.8-1 -> 1.8-2
==============
- fixed bug in makeInterval (for non-fixed number of digits) - thanks to A. Bakic

1.7-1 -> 1.8-1
==============
- shifted to Java 5
- reorganized source
- added Automaton method: subst(char,String)

1.6-6 -> 1.7-1
==============
- added Hopcroft's minimization algorithm (more predictable 
  behavior than Brzozowski's, but typically a bit slower)

1.6-5 -> 1.6-6
==============
- fixed bug in complement of nondeterministic automata

1.6-4 -> 1.6-5
==============
- added Automaton method: subst

1.6-3 -> 1.6-4
==============
- changed to BSD license

1.6.2 -> 1.6-3
==============
- added shuffle (interleaving) operation to Automaton

1.6.1 -> 1.6-2
==============
- fixed bug in Automaton.concatenate(List)

1.5-1 -> 1.6-1
==============
- added numerical intervals to RegExp and Automaton

1.4-1 -> 1.5-1
==============
- added Brzozowski's minimization algorithm

1.3-3 -> 1.4-1
==============
- special fast mode for single string automata
- added Automaton method: restoreInvariant

1.3-2 -> 1.3-3
==============
- added Automaton methods: 
    - hashCode (needed by equals)
    - getCommonPrefix

1.3-1 -> 1.3-2
==============
- added Automaton methods:
    - getShortestExample
    - setMinimizeAlways

1.2-7 -> 1.3-1
==============
- State class, Transition class, and various Automaton methods made public
  to allow manual construction of automata

1.2-6 -> 1.2-7
==============
- added Automaton method: compress

1.2-5 -> 1.2-6
==============
- added build.xml makefile for Ant

1.2-4 -> 1.2-5
==============
- added Automaton methods:
    - equals
    - load (from stream or URL)
    - store (to stream)
- Automaton implements Serializable

1.2-3 -> 1.2-4
==============
- added Automaton methods:
    - projectChars
    - concatenate (List)
    - union (List)

1.1 -> 1.2-3
============
- added Automaton methods:
    - trim
    - homomorph
    - singleChars
    - isEmpty
    - isTotal
    - isFinite
    - getFiniteStrings
    - getNumberOfStates
    - getNumberOfTransitions
    - subsetOf
- added RunAutomaton methods:
    - load (from stream or URL)
    - store (to stream)
    - run (longest accepted substring run)
- added getIdentifiers method to RegExp
- RunAutomaton implements Serializable

1.0 -> 1.1
==========
- added regular expression parser (RegExp class)
- tableized run method in RunAutomaton
