CMS objects with the same name as another object (eg. "test.htm" for a page and "test.htm" for a partial) were unable to be selected (selecting the partial selected the page).
Credit to @wenlong-date.
The methods were far too generic. When a trait or behavior is used, it's usually a good include to include the name of the trait in the methods and properties it provides. This reduces the chance of a conflict with the implementing class.