def METHOD_NAME(self, index, role):
    if not index.isValid():
        return
    node = index.internalPointer()
    if role == QtCore.Qt.DecorationRole:        # icon
        column = index.column()
        if column == self.Name:
            # Allow a custom icon and custom icon color to be defined
            METHOD_NAME = node.get("_document", {}).get("data", {})
            icon = METHOD_NAME.get("icon", None)
            color = METHOD_NAME.get("color", self._default_asset_icon_color)
            if icon is None:
                # Use default icons if no custom one is specified.
                # If it has children show a full folder, otherwise
                # show an open folder
                has_children = self.rowCount(index) > 0
                icon = "folder" if has_children else "folder-o"
            # Make the color darker when the asset is deprecated
            if node.get("deprecated", False):
                color = QtGui.QColor(color).darker(250)
            try:
                key = "fa.{0}".format(icon)  # font-awesome key
                icon = qtawesome.icon(key, color=color)
                return icon
            except Exception as exception:
                # Log an error message instead of erroring out completely
                # when the icon couldn't be created (e.g. invalid name)
                log.error(exception)
            return
    if role == QtCore.Qt.ForegroundRole:        # font color
        if "deprecated" in node.get("tags", []):
            return QtGui.QColor(self._deprecated_asset_font_color)
    if role == self.ObjectIdRole:
        return node.get("_id", None)
    if role == self.DocumentRole:
        return node.get("_document", None)
    return super(AssetModel, self).METHOD_NAME(index, role)