LPS-44643 Reverted "Remove unnecessary abstraction". We do need the abstraction because FreeMarker templated variables need to be actual instances instead of static classes

This reverts commit 7b25f84e4aae097dd0bf1606e0e4f571f59b8df0.
LPS-44643 Namespace var names
LPS-44643 Don't chain method names
LPS-44643 Use isEmpty

Replicated 7e4bf305138f3252f397975b04220647436f88ae
LPS-44643 Don’t add the word Current when use the word Scope in other places to mean the same thing
LPS-44643 Set the title before setting the URL (i.e. alphabetize)

Replicates f2d0c1d601c441dcad4a524115f5589045f21180
Replicates 75f6b5c5dff7446902b57ee97db827d4cafc7240
Replicates ee3b92e24e076491e098b8cffdff3a9af1081d7c
LPS-44643 Avoid creating empty list
LPS-44643 Optimize for human reading

Replicates bd00ba73204d523bb6e25f4452d5a20ccf94f700
Replicates 2c66cebe8ba944ea967b1d0b1b5c7d9c0ef880ef
Replicates 2821fc4a53b7bed0fdd3222288c652924777c7bd
LPS-44643 SF - autosort & line breaks
LPS-44643 Removed provider annotation