def _split_members(members):
    """Splits the members list into 3 sublists:
        -One containing functions (or other callable objects).
        -One containing properties which have a setter
        -The last containing properties which don´t have a setter
    Anything not falling in one of those categories gets discarded."""
    callables, settable_properties, not_settable_properties = [], [], []
    for element in members:
        element_value = element[1]
        if callable(element_value):
            callables.append(element)
        elif isinstance(element_value, property):
            if element_value.fset is None:
                not_settable_properties.append(element)
            else:
                settable_properties.append(element)
    return callables, settable_properties, not_settable_properties
