async def METHOD_NAME(self, user_selection: U, lang: str, translate: Callable[[str], str]) -> T:
    """
    Based on user selection encoded as a list of tuples [(key1, value1), ...,(keyN, valueN)]
    return a filtered values matching the selected ones.
    E.g. let's say we have the following variants in a corpus: AAB, ACD, BAB, CAA
    and user selects A.. Then we want to return [A, C] for the second position and
    [B, D] for the third position as possible values.
    For key-value tagsets it works in the same way - just imagine K1=A, K2=A,
    K3=B instead of AAB, K1=A, K2=C, K3=D instead of ACD etc.
    """