+ * <li>package - full package name
+ * (<a href="https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html"> Naming a
+ * package</a>)</li>
+ * <li>
+ * <li>
+ * <ul>
+ * <li>parts of package name are separated by dots</li>
+ * <li>parts of package name are converting to lower case</li>
+ * <li>if parts of package name are reserved Java or Windows keywords, such as 'int' the suggested
+ * convention is to add an underscore to keyword</li>
+ * <li>dash is parsed as underscore according to
+ * <a href="https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html"> Naming a
+ * package</a></li>
+ * <li>examples:</li>
+ * <li>
+ * <ul>
+ * <li>org.example* - org.exampleasterisk</li>
+ * <li>org.example*example - org.exampleasteriskexample</li>
+ * <li>org.\example - org.reversesolidusexample</li>
+ * <li>org.1example - org.digitoneexample</li>
+ * <li>org.example1 - org.example1</li>
+ * <li>org.int - org.int_</li>
+ * <li>org.con - org.con_</li>
+ * <li>org.foo-cont - org.foo_cont</li>
+ * </ul>
+ * </li>
+ * </ul>
+ * </li>
+ * </ul>
+ *
+ * There is special case in CLASS, INTERFACE, ENUM, ENUM VALUE, CONSTANT, METHOD and VARIABLE if
+ * identifier contains single dash - then the converter ignores the single dash in the way of the
+ * non-java chars. In other way, if dash is the first or the last char in the identifier or there is
+ * more dashes in a row in the identifier, then these dashes are converted as non-java chars.
+ * Example:
+ * <ul>
+ * <li>class, enum, interface</li>
+ * <li>
+ * <ul>
+ * <li>foo-cont - FooCont</li>
+ * <li>foo--cont - FooHyphenMinusHyphenMinusCont</li>
+ * <li>-foo - HyphenMinusFoo</li>
+ * <li>foo- - FooHyphenMinus</li>
+ * </ul>
+ * </li>
+ * <li>enum value, constant
+ * <li>
+ * <ul>
+ * <li>foo-cont - FOO_CONT</li>
+ * <li>foo--cont - FOO_HYPHEN_MINUS_HYPHEN_MINUS_CONT</li>
+ * <li>-foo - HYPHEN_MINUS_FOO</li>
+ * <li>foo- - FOO_HYPHEN_MINUS</li>
+ * </ul>
+ * </li>
+ * <li>method, variable</li>
+ * <li>
+ * <ul>
+ * <li>foo-cont - fooCont</li>
+ * <li>foo--cont - fooHyphenMinusHyphenMinusCont</li>
+ * <li>-foo - hyphenMinusFoo</li>
+ * <li>foo- - fooHyphenMinus</li>
+ * </ul>
+ * </li>