def config_dir(self):
        "Return dir(self)."

        my_vars = set(self)
        skips = self.bad_names | my_vars

        yield from (
            attr
            for attr in dir(type(self))
            if (
                attr not in skips and
                not (
                    attr.startswith('_') and
                    not attr.startswith('__') and
                    hasattr(self, attr[1:])
                ) and hasattr(self, attr)
            )
        )

        yield from my_vars