Extract strings to static final fields
Fix [SonarQube] Loose Coupling (Avoid using implementation types like
'ArrayList'; use the interface instead)

Fix [SonarQube] Loose Coupling (Avoid using implementation types like
'TreeMap'; use the interface instead)
Add javadoc
Refactor local variable name for descriptiveness
Refactor local variable name for descriptiveness
Add javadoc
Format per coding standard