'parse a string-based _colspec into its component parts.'

@util.memoized_property
def _column_tokens(self):

    m = self._get_colspec().split('.')
    if (m is None):
        raise exc.ArgumentError(('Invalid    foreign    key    column    specification:    %s' % self._colspec))
    if (len(m) == 1):
        tname = m.pop()
        colname = None
    else:
        colname = m.pop()
        tname = m.pop()
    if (len(m) > 0):
        schema = '.'.join(m)
    else:
        schema = None
    return (schema, tname, colname)
