def METHOD_NAME(x):
    handle = x.v_handle
    if not isinstance(handle, ObjectHandle):
        handle = ObjectHandle(handle)
    tindex = ctypes.c_uint()
    check_call(_LIB.TVMObjectGetTypeIndex(handle, ctypes.byref(tindex)))
    cls = OBJECT_TYPE.get(tindex.value, _CLASS_OBJECT)
    if issubclass(cls, PyNativeObject):
        obj = _CLASS_OBJECT.__new__(_CLASS_OBJECT)
        obj.handle = handle
        return cls.__from_tvm_object__(cls, obj)
    # Avoid calling __init__ of cls, instead directly call __new__
    # This allows child class to implement their own __init__
    obj = cls.__new__(cls)
    obj.handle = handle
    return obj