'Split the string on (.) while preserving any (.) inside the
\'{}\' alternalte syntax for full ns qualification.
@param s: A plain or qualifed name.
@type s: str
@return: A list of the name\'s parts.
@rtype: [str,..]'

def split(self, s):

    parts = []
    b = 0
    while 1:
        m = self.splitp.match(s, b)
        if (m is None):
            break
        (b, e) = m.span()
        parts.append(s[b:e])
        b = (e + 1)
    return parts
