Now that overloads are kept ordered, I can replace the existing remove_hidden_names fn with ovl_skip_hidden. The former works by scanning the overloads, then if it discovers a hidden one, copying the list (from the beginning) omitting the hidden ones. Now, overloads aren't usually huge, but this forces scanning on every lookup, and is O(N^2), so bad. ovl_skip_hidden simply drops the OVL_HIDDEN_P nodes at the start of an overload. Often doing nothing. For extra badness, lookup_name_real was applying remove_hidden_names to a result that had already had it run! Applied to trunk. nathan -- Nathan Sidwell