def remove_defaults(self, *args):
        '''
        node.remove_defaults(a, b...) is identical to node.discard_defaults(a, b...) except that
        it raises a KeyError if any of the given arguments are not already defaults.
        '''
        rms = set(arg for aa in args for arg in ([aa] if isinstance(aa, six.string_types) else aa))
        for arg in rms:
            if arg not in self.defaults:
                raise KeyError('{0}'.format(arg))
        return self.discard_defaults(*args)