abstract type AbstractTask end abstract type AbstractComputeTask <: AbstractTask end abstract type AbstractDataTask <: AbstractTask end struct FusedComputeTask{T1<:AbstractComputeTask, T2<:AbstractComputeTask} <: AbstractComputeTask end get_types(::FusedComputeTask{T1, T2}) where {T1, T2} = (T1, T2)