'Given a column added to the .c collection of an underlying
selectable, produce the local version of that column, assuming this
selectable ultimately should proxy this column.
this is used to "ping" a derived selectable to add a new column
to its .c. collection when a Column has been added to one of the
Table objects it ultimtely derives from.
If the given selectable hasn\'t populated it\'s .c. collection yet,
it should at least pass on the message to the contained selectables,
but it will return None.
This method is currently used by Declarative to allow Table
columns to be added to a partially constructed inheritance
mapping that may have already produced joins.  The method
isn\'t public right now, as the full span of implications
and/or caveats aren\'t yet clear.
It\'s also possible that this functionality could be invoked by
default via an event, which would require that
selectables maintain a weak referencing collection of all
derivations.'

def _refresh_for_new_column(self, column):

    if (not self._cols_populated):
        return None
    elif ((column.key in self.columns) and (self.columns[column.key] is column)):
        return column
    else:
        return None
