update groupId, url and scm to fork project
update dependency and JDK version
ignore files generated by Maven
let user uses other string to represent line which does not exist.
inner class/enum should be static
replace idiom with Guava
Equalizer should support null value.