def _replace(_self, **kwds):
    """Return a new Literal object replacing specified fields with new value"""
    result = _self._make(map(kwds.pop, ('value', 'language', 'datatype'),
        _self))
    if kwds:
        raise ValueError('Got unexpected field names: %r' % kwds.keys())
    return result
