def METHOD_NAME(inp_dt, sycl_obj, ref_type=None):
    """
    Type inference utility to construct data type
    object with defaults based on reference type.
    _get_dtype is used by dpctl.tensor.asarray
    to infer data type of the output array from the
    input sequence.
    """
    if inp_dt is None:
        if ref_type in [None, float] or np_issubdtype(ref_type, np_floating):
            fp_dt = ti_default_device_fp_type(sycl_obj)
            return dtype(fp_dt)
        if ref_type in [bool, np_bool_]:
            bool_dt = ti_default_device_bool_type(sycl_obj)
            return dtype(bool_dt)
        if ref_type is int or np_issubdtype(ref_type, np_integer):
            int_dt = ti_default_device_int_type(sycl_obj)
            return dtype(int_dt)
        if ref_type is complex or np_issubdtype(ref_type, np_complexfloating):
            cfp_dt = ti_default_device_complex_type(sycl_obj)
            return dtype(cfp_dt)
        raise TypeError(f"Reference type {ref_type} not recognized.")
    return dtype(inp_dt)