'Join conjunctions to surrounding pieces, e.g.:
[\'Mr. and Mrs.\'], [\'King of the Hill\'], [\'Jack and Jill\'], [\'Velasquez y Garcia\']
:param list pieces: name pieces strings after split on spaces
:param int additional_parts_count:
:return: new list with piece next to conjunctions merged into one piece with spaces in it.
:rtype: list'

def join_on_conjunctions(self, pieces, additional_parts_count=0):

    length = (len(pieces) + additional_parts_count)
    if (length < 3):
        return pieces
    for conj in filter(self.is_conjunction, pieces[::(-1)]):
        if ((len(conj) == 1) and ((len(list(filter(self.is_rootname, pieces))) + additional_parts_count) < 4)):
            continue
        try:
            i = pieces.index(conj)
        except ValueError:
            log.error(u"Couldn't    find    '{conj}'    in    pieces.    i={i},    pieces={pieces}".format(**locals()))
            continue
        if (i < (len(pieces) - 1)):
            if self.is_conjunction(pieces[(i - 1)]):
                new_piece = u'    '.join(pieces[i:(i + 2)])
                self.C.conjunctions.add(new_piece)
                pieces[i] = new_piece
                pieces.pop((i + 1))
                continue
            new_piece = u'    '.join(pieces[(i - 1):(i + 2)])
            if self.is_title(pieces[(i - 1)]):
                self.C.titles.add(new_piece)
            pieces[(i - 1)] = new_piece
            pieces.pop(i)
            pieces.pop(i)
    prefixes = list(filter(self.is_prefix, pieces))
    try:
        for prefix in prefixes:
            try:
                i = pieces.index(prefix)
            except ValueError:
                def find_p(p):
                    return p.endswith(prefix)
                m = list(filter(find_p, pieces))
                i = pieces.index(m[0])
            pieces[i] = u'    '.join(pieces[i:(i + 2)])
            pieces.pop((i + 1))
    except IndexError:
        pass
    log.debug(u'pieces:    {0}'.format(pieces))
    return pieces
