The opts array is used in lines 71 - 73 below. As I go through the editor, session, and renderer objects methods if I find one that begins with "set" I push the name into the opts array. I use this list of method names to ensure that the out array @ line 40 doesn't end up with multiple entries for the same set function's name since the same name may be found on some of the objects. I didn't have the patience to read every function definition to determine which functions were delegating responsibility elsewhere, I just work my way backward through the descendants. I mean I start with renderer, then session, then gather from the editor.

If I could simply set properties on editor.$options I could get rid of this function entirely. I'd only have to filter out the editor options that shouldn't go on the menu and add in a few options that aren't in editor.$optons. It looked like I was supposed to access things through the set and get functions since they do more than just change the $options property. The set and get functions are spread across different objects so, I look for matching sets of set and get properties as an indicator that I've found something configurable while traversing the editor, session, and renderer objects.

If there is an easier way to gather all the necessary information for building the menu it would be great. I don't know how to do it though.