def METHOD_NAME(self, adj_t: SparseTensor,
               dtype: Optional[int] = None) -> SparseTensor:
    if not adj_t.has_value():
        adj_t = adj_t.fill_value(1.0)
    tmp = SparseTensor.eye(adj_t.size(0), adj_t.size(1), has_value=True,
                           dtype=dtype, device=adj_t.device())
    tmp = tmp.mul_nnz(self.weight[0], layout='coo')
    outs = [tmp]
    for i in range(1, self.filter_size + 1):
        tmp = tmp @ adj_t
        tmp = tmp.mul_nnz(self.weight[i], layout='coo')
        outs += [tmp]
    row = torch.cat([out.storage.row() for out in outs], dim=0)
    col = torch.cat([out.storage.col() for out in outs], dim=0)
    value = torch.cat([out.storage.value() for out in outs], dim=0)
    out = SparseTensor(row=row, col=col, value=value,
                       sparse_sizes=adj_t.sparse_sizes()).coalesce()
    return out