<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def filter_from_alias(self, alias, backend=None):
 """ Return aliases that start with the given `alias`, optionally filtered by backend. """

        def alias_filter(key_item):
            key, item = key_item

            return ((alias is None or alias in key) and
                    (backend is None or item.backend == backend))

        items = six.moves.filter(alias_filter, six.iteritems(self))

        aliases = collections.OrderedDict(sorted(items, key=lambda a: a[0].lower()))

        return aliases