def _lookupChainInClass(self, pyClass, pyAst, chainWithPosition):
        memberFunctions = self._classMemberFunctions(pyClass)

        for _, func in memberFunctions:
            # lookup should be indpendent of which function we
            # actually choose. However, the unbound chain may not
            # appear in every member function
            try:
                return self._lookupChainInFunction(func, chainWithPosition)
            except UnresolvedFreeVariableException:
                pass

        baseClassResolutionOrNone = self._resolveChainByBaseClasses(
            pyClass, pyAst, chainWithPosition
            )
        if baseClassResolutionOrNone is not None:
            return baseClassResolutionOrNone

        raise UnresolvedFreeVariableException(chainWithPosition, None)
return a pair `(subchain, subchainResolution)`
dataset/ETHPy150Open ufora/ufora/packages/python/pyfora/PyObjectWalker.py/PyObjectWalker._lookupChainInClass