def METHOD_NAME(this, args):
    obj = get_arg(args, 0)
    prop = get_arg(args, 1)
    attrs = get_arg(args, 2)
    if not is_object(obj):
        raise MakeError('TypeError',
                        'Object.defineProperty called on non-object')
    name = to_string(prop)
    if not obj.define_own_property(name, ToPropertyDescriptor(attrs),
                                   False):
        raise MakeError('TypeError', 'Cannot redefine property: %s' % name)
    return obj