def METHOD_NAME(self):  # pylint: disable=no-self-use
    # pylint: disable=no-member,protected-access
    type_int = CQLTypeBuilder('int')
    assert type_int._get_available_variants(
        already_created_info={},
        avoid_types=['int', 'map'],
        allowed_types=['int', 'map', 'list', 'text'],
        allow_levels=1
    ) == ['list', 'text']
    assert type_int._get_available_variants(
        already_created_info={},
        avoid_types=['int'],
        allowed_types=['int', 'map', 'list', 'text'],
        allow_levels=0
    ) == ['text']
    type_map_of_int_int = CQLTypeBuilder('map', key_type=CQLTypeBuilder('int'), value_type=CQLTypeBuilder('int'))
    type_map_of_map_of_int_int = CQLTypeBuilder('map', key_type=type_map_of_int_int, value_type=type_map_of_int_int)
    assert str(type_int) == 'int'
    assert str(type_map_of_int_int) == 'map<int,int>'
    assert str(type_map_of_map_of_int_int) == 'map<frozen<map<int,int>>,frozen<map<int,int>>>'
    already_used_info = {}
    type_int.remember_variant(already_used_info)
    assert already_used_info == {'int': True}, f'{already_used_info}'
    type_map_of_int_int.remember_variant(already_used_info)
    assert already_used_info == {'int': True, 'map': {'key_type': {'int': True}, 'value_type': {'int': True}}}, \
        f'{already_used_info}'
    type_map_of_map_of_int_int.remember_variant(already_used_info)
    assert already_used_info == {
        'int': True, 'map': {
            'key_type': {'int': True, 'map': {
                'key_type': {'int': True},
                'value_type': {'int': True}}},
            'value_type': {'int': True, 'map': {
                'key_type': {'int': True},
                'value_type': {'int': True}}}}}, \
        f'{already_used_info}'
    type_map_of_map_of_int_int.forget_variant(already_used_info)
    assert already_used_info == {'int': True, 'map': {'key_type': {'int': True},
                                                      'value_type': {'int': True}}}, f'{already_used_info}'
    type_map_of_int_int.forget_variant(already_used_info)
    assert already_used_info == {'int': True}, f'{already_used_info}'
    type_int.forget_variant(already_used_info)
    assert already_used_info == {}, f'{already_used_info}'