'Retrieves a list of chained matches, after position, matching predicate and separated by characters from seps
only.
:param position:
:type position:
:param seps:
:type seps:
:param end:
:type end:
:param predicate:
:type predicate:
:param index:
:type index:
:return:
:rtype:'

def chain_after(self, position, seps, end=None, predicate=None, index=None):

    if hasattr(position, 'end'):
        position = position.end
    chain = _BaseMatches._base()
    if (end is None):
        end = self.max_end
    else:
        end = min(self.max_end, end)
    for i in range(position, end):
        index_matches = self.at_index(i)
        filtered_matches = [index_match for index_match in index_matches if ((not predicate) or predicate(index_match))]
        if filtered_matches:
            for chain_match in filtered_matches:
                if (chain_match not in chain):
                    chain.append(chain_match)
        elif (self.input_string[i] not in seps):
            break
    return filter_index(chain, predicate, index)
