':param in_list: A list with all the strings that we want
to match against one or more strings using the "query" function.
This list might be [str_1, str_2 ... , str_N] or something like
[ (str_1, obj1) , (str_2, obj2) ... , (str_N, objN)]. In the first
case, if a match is found this class will return [ str_N, ]
in the second case we\'ll return [ [str_N, objN], ]'

def __init__(self, in_list):

    self._index = esm.Index()
    for item in in_list:
        if isinstance(item, tuple):
            in_str = item[0]
            in_str = in_str.encode(DEFAULT_ENCODING)
            self._index.enter(in_str, item)
        elif isinstance(item, basestring):
            item = item.encode(DEFAULT_ENCODING)
            self._index.enter(item, (item,))
        else:
            raise ValueError('Can    NOT    build    esm_multi_in    with    provided    values.')
    self._index.fix()
