'Loads up data from an iterator over tuples described in the class
docs.'

def _load(self, data_loader):

    episode = []
    last_cands = None
    for (entry, new) in data_loader:
        if (new and (len(episode) > 0)):
            self.data.append(tuple(episode))
            episode = []
            last_cands = None
        new_entry = []
        if (len(entry) > 0):
            if (entry[0] is not None):
                new_entry.append(sys.intern(entry[0]))
            else:
                new_entry.append(None)
            if (len(entry) > 1):
                if (entry[1] is None):
                    new_entry.append(None)
                elif (hasattr(entry[1], '__iter__') and (type(entry[1]) is not str)):
                    new_entry.append(tuple((sys.intern(e) for e in entry[1])))
                else:
                    raise TypeError('Must    provide    iterable    over    labels,    not    a    single    string.')
                if (len(entry) > 2):
                    if (entry[2] is not None):
                        new_entry.append(sys.intern(entry[2]))
                    else:
                        new_entry.append(None)
                    if (len(entry) > 3):
                        if (entry[3] is None):
                            new_entry.append(None)
                        elif (last_cands and (entry[3] is last_cands)):
                            new_entry.append(sys.intern('same    as    last    time'))
                        elif (hasattr(entry[3], '__iter__') and (type(entry[3]) is not str)):
                            last_cands = entry[3]
                            new_entry.append(tuple((sys.intern(e) for e in entry[3])))
                        else:
                            raise TypeError('Must    provide    iterable    over    label    candidates,    not    a    single    string.')
                        if ((len(entry) > 4) and (entry[4] is not None)):
                            new_entry.append(sys.intern(entry[4]))
        episode.append(tuple(new_entry))
    if (len(episode) > 0):
        self.data.append(tuple(episode))
