@classmethod
def check_kwargs(cls, kwargs, data_type):
    """Check keyword arguments & their values given to ``Field``
        constructor such as ``default``, ``required`` ...
        """
    err_str = (data_type.__name__ +
        ': %s keyword argument not allowed or "%s" value invalid')
    for k, v in kwargs.items():
        if k in cls.allowed_kwargs:
            if not cls.allowed_kwargs[k](v):
                raise TypeError(err_str % (k, v))
        elif data_type in cls.extra_kwargs and k in cls.extra_kwargs[data_type
            ]:
            if not cls.extra_kwargs[data_type][k](v):
                raise TypeError(err_str % (k, v))
        else:
            raise TypeError(err_str % (k, v))
