def getterChain(*getters):
    """
    Create a getter chain, this means that the first getter will be invoked and the object returned will passed on as 
    an object to the next getter so fort and so on. If one getter return None then the chain stops.
    
    @param getters: attributes[callable(object)]
        The getters to be invoked in a chain.
    """
    assert getters, 'At least a getter is required'
    if __debug__:
        for getter in getters:
            assert callable(getter), 'Invalid getter %s' % getter

    def getter(obj):
        for getter in getters:
            obj = getter(obj)
            if obj is None:
                break
        return obj
    return getter
