<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def index(self, row, column, parent):
 """ Returns the index of the item in the model specified by the given row, column and parent index. row, column == int, parent == QModelIndex """


        if not self.hasIndex(row, column, parent):
            return QtCore.QModelIndex()

        if not parent.isValid():
            parentItem = self.root
        else:
            # So, here we go from QModelIndex to the actual object .. ?
            parentItem = parent.internalPointer()

        # the only place where a child item is queried
        childItem = parentItem.getChild(row)
        if childItem:
            # return self.createIndex(row, column)
            return self.createIndex(row, column, childItem)
            """
            # .. that one does not work for PySide 5.12+
            TypeError: 'PySide2.QtCore.QAbstractItemModel.createIndex' called with wrong argument types:
            PySide2.QtCore.QAbstractItemModel.createIndex(int, int, ServerListItem)
            Supported signatures:
            PySide2.QtCore.QAbstractItemModel.createIndex(int, int, quintptr = 0)
            PySide2.QtCore.QAbstractItemModel.createIndex(int, int, void = nullptr)
            """
        else:
            return QtCore.QModelIndex()