Seems to me with the level of nesting that this should be answered in a Descriptor::Resource class. That is have a resource.entry_points method that memoizes this and then you aggregate them all here.