docs: function getInheritedCollectionNames(node) {
              var names = [],
                  startNode = node,
                  actualNode = node,
                  endNode,
                  inverseOverlays,
                  name,
                  target;
  
              while (startNode) {
                  actualNode = self.getBase(startNode);
                  endNode = self.getBase(getInstanceRoot(startNode));
                  target = '';
                  if (actualNode && endNode) {
                      while (actualNode && actualNode !== self.getParent(endNode)) {
                          inverseOverlays = innerCore.getInverseOverlayOfNode(actualNode);
                          if (inverseOverlays[target]) {
                              for (name in inverseOverlays[target]) {
                                  if (names.indexOf(name) === -1) {
                                      names.push(name);
                                  }
                              }
                          }
                          target = CONSTANTS.PATH_SEP + self.getRelid(actualNode) + target;
                          actualNode = self.getParent(actualNode);
                      }
                  }
                  startNode = self.getBase(startNode);
              }
  
              return names;
          }