**Description**
The `airflow.models.baseoperator.chain()` is a very useful and convenient way to add sequential task dependencies in DAGs but the function only supports tasks of a `BaseOperator` type.

**Use case / motivation**
Users who create tasks via the `@task` decorator will not be able to use the `chain()` function to apply sequential dependencies that do not share an `XComArg` implicit dependency.

**Are you willing to submit a PR?**
Absolutely. 🚀 

**Related Issues**
None

airflow/models/baseoperator.py
)
            DagContext.pop_context_managed_dag()
        return cls.__serialized_fields
    def is_smart_sensor_compatible(self):
        """Return if this operator can use smart service. Default False."""
        return False
    @property
    def inherits_from_dummy_operator(self):
        """Used to determine if an Operator is inherited from DummyOperator"""
        
        
        
        return getattr(self, '_is_dummy', False)
def chain(*tasks: Union[BaseOperator, Sequence[BaseOperator]]):
    r"""
    Given a number of tasks, builds a dependency chain.
    Support mix airflow.models.BaseOperator and List[airflow.models.BaseOperator].
    If you want to chain between two List[airflow.models.BaseOperator], have to
    make sure they have same length.
    .. code-block:: python
         chain(t1, [t2, t3], [t4, t5], t6)
    is equivalent to::
         / -> t2 -> t4 \
       t1               -> t6
         \ -> t3 -> t5 /
    .. code-block:: python
        t1.set_downstream(t2)
        t1.set_downstream(t3)
        t2.set_downstream(t4)
        t3.set_downstream(t5)