'Find all the shadowed names.  extra is an iterable of variables
that may be defined with `add_special` which may occour scoped.'

def find_shadowed(self, extra=()):

    i = self.identifiers
    return (((i.declared | i.outer_undeclared) & (i.declared_locally | i.declared_parameter)) | set((x for x in extra if i.is_declared(x))))
