text:
# This file is a part of Julia. License is MIT: https://julialang.org/license

using Test, LinearAlgebra, SparseArrays
let ambig = detect_ambiguities(LinearAlgebra; recursive=true)
    @test_broken isempty(ambig)
    ambig = Set{Any}(((m1.sig, m2.sig) for (m1, m2) in ambig))
    expect = []

    push!(expect, (Tuple{typeof(\),Factorization{T},Union{Array{Complex{T},1}, Array{Complex{T},2}}} where T<:Union{Float32, Float64}, Tuple{typeof(\),Union{QR{TA,S} where S<:AbstractMatrix{TA}, LinearAlgebra.QRCompactWY{TA,M} where M<:AbstractMatrix{TA}, QRPivoted{TA,S} where S<:AbstractMatrix{TA}},AbstractVecOrMat{TB}} where TB where TA))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{T,var"#s843"} where var"#s843"<:(LU{T,var"#s842"} where var"#s842"<:(StridedMatrix{T} where T)),StridedVecOrMat{T}} where T<:Real, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{T,var"#s843"} where var"#s843"<:(LU{T,var"#s842"} where var"#s842"<:(StridedMatrix{T} where T)),StridedVecOrMat{T}} where T<:Real, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{T,var"#s843"} where var"#s843"<:(LU{T,var"#s842"} where var"#s842"<:(StridedMatrix{T} where T)),StridedVecOrMat{T}} where T<:Real, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{T,var"#s843"} where var"#s843"<:(LU{T,var"#s842"} where var"#s842"<:(StridedMatrix{T} where T)),StridedVecOrMat{T}} where T<:Real, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:Hessenberg where var"#s843",AbstractVecOrMat{T} where T}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(LowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:Hessenberg where var"#s843",AbstractVecOrMat{T} where T}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitLowerTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:Hessenberg where var"#s843",AbstractVecOrMat{T} where T}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UnitUpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:Hessenberg where var"#s843",AbstractVecOrMat{T} where T}, Tuple{typeof(ldiv!),Adjoint{var"#s806",var"#s805"} where var"#s805"<:(UpperTriangular{T,var"#s804"} where var"#s804"<:(StridedMatrix{T} where T)) where var"#s806",StridedVecOrMat{T}} where T<:Union{ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Adjoint{var"#s843",var"#s842"} where var"#s842"<:Hessenberg where var"#s843",AbstractVecOrMat{T} where T}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(Diagonal{T,V} where V<:AbstractVector{T}) where var"#s843",AbstractVecOrMat{T}} where T, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:(LU{var"#s841",var"#s840"} where var"#s840"<:(StridedMatrix{T} where T) where var"#s841") where var"#s843",StridedVecOrMat{T} where T}, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:LU{T,Tridiagonal{T,V}} where var"#s843",AbstractVecOrMat{T} where T} where V where T, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(LowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:LU{T,Tridiagonal{T,V}} where var"#s843",AbstractVecOrMat{T} where T} where V where T, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitLowerTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:LU{T,Tridiagonal{T,V}} where var"#s843",AbstractVecOrMat{T} where T} where V where T, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UnitUpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:LU{T,Tridiagonal{T,V}} where var"#s843",AbstractVecOrMat{T} where T} where V where T, Tuple{typeof(ldiv!),Transpose{var"#s812",var"#s811"} where var"#s811"<:(UpperTriangular{T,var"#s810"} where var"#s810"<:(StridedMatrix{T} where T)) where var"#s812",StridedVecOrMat{T}} where T<:Union{Float32, Float64, ComplexF32, ComplexF64}))
    push!(expect, (Tuple{typeof(ldiv!),Transpose{var"#s843",var"#s842"} where var"#s842"<:LU{T,Tridiagonal{T,V}} where var"#s843",AbstractVecOrMat{T} where T} where V where T, Tuple{typeof(ldiv!),Union{Adjoint{T,var"#s843"} where var"#s843"<:(UpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitUpperTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s843"} where var"#s843"<:(LowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Adjoint{T,var"#s841"} where var"#s841"<:(UnitLowerTriangular{T,var"#s840"} where var"#s840"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), LowerTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), Transpose{T,var"#s839"} where var"#s839"<:(UpperTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitUpperTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s839"} where var"#s839"<:(LowerTriangular{T,var"#s838"} where var"#s838"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), Transpose{T,var"#s837"} where var"#s837"<:(UnitLowerTriangular{T,var"#s836"} where var"#s836"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)), UnitLowerTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UnitUpperTriangular{T,var"#s842"} where var"#s842"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti), UpperTriangular{T,var"#s843"} where var"#s843"<:(Union{SparseArrays.AbstractSparseMatrixCSC{T,Ti}, SubArray{T,2,var"#s843",Tuple{Base.Slice{Base.OneTo{Int}},I},L} where L where var"#s843"<:SparseArrays.AbstractSparseMatrixCSC{T,Ti} where I<:AbstractUnitRange} where Ti)},StridedVecOrMat{T}} where T))

    good = true
    while !isempty(ambig)
        sigs = pop!(ambig)
        i = findfirst(==(sigs), expect)
        if i === nothing
            println(stderr, "push!(expect, (", sigs[1], ", ", sigs[2], "))")
            good = false
            continue
        end
        deleteat!(expect, i)
    end
    @test isempty(expect)
    @test good
end

max_stars_repo_name: ExpandingMan/julia

max_issues_repo_name: ExpandingMan/julia

max_forks_repo_name: ExpandingMan/julia


text:
# Useful math constants for distributions

import Base.@math_const

@math_const twoπ   6.2831853071795864769 big(2.) * π
@math_const √2     1.4142135623730950488 sqrt(big(2.))
@math_const log2π  1.8378770664093454836 log(big(2.)*π)
@math_const √2π    2.5066282746310005024 sqrt(big(2.)*π)

ext: jl


text:
## An example of emitter estimation from a combined direct detection and SLIVER measurement

include("../src/BayesMultiFit.jl")
BAMF=BayesMultiFit
using ReversibleJumpMCMC
const RJMCMC = ReversibleJumpMCMC
using ImageView
using Plots
using MATLAB
#ImageView.closeall()

# simulation config
n=Int32(5)  #number of emitters
μ=1000      #mean photons per emitter
iterations=1000
burnin=1000

# telescope parameters
f=2.0f0
D=0.1f0
λ=1f-6

# detector parameters
zoom=1f0
pixelsize=4f-6*zoom
sz=Int32(32/zoom)

# setup the psf
ν=π*D/(λ*f)*pixelsize
psf=BAMF.PSF_airy2D(ν)
σ=.42f0*pi/ν  #used for mcmc jump size calculations

# create an empty dataset structure
# ?BAMF.DataSLIVER

nmeas=2
if nmeas==1
    type=Int32[1] #DD
end
if nmeas==2
    type=Int32[1,2] #DD then SLIVER
end

data=BAMF.DataSLIVER(sz,type)

# setup prior distribution on intensity
using Distributions
α=Float32(4)
θ=Float32(μ/α)
g=Gamma(α,θ)
len=Int32(1024)
θ_start=Float32(1)
θ_step=Float32(5.0)
pdf_x=range(θ_start,step=θ_step,length=len)
mypdf=pdf(g,pdf_x)
plt=plot(pdf_x,mypdf)
display(plt)
prior_photons=BAMF.RJPrior(len,θ_start,θ_step,mypdf)

# set emitter positions and intensity
x=sz/2f0*ones(Float32,n)+2*σ*randn(Float32,n)
y=sz/2f0*ones(Float32,n)+ 2*σ*randn(Float32,n)
photons=Float32.(rand(g,n))
bg=1f-6
datastate=BAMF.StateFlatBg(n,x,y,photons,bg)

# set inversion points
data.invx=sz/2f0*ones(Float32,nmeas)
data.invy=sz/2f0*ones(Float32,nmeas)

# generate the data
BAMF.genmodel!(datastate,sz,psf,data)

## Profiling and Timing
#  using BenchmarkTools
#  @benchmark BAMF.genmodel!(datastate,sz,psf,data)
#  @time BAMF.genmodel!(datastate,sz,psf,data)
# using ProfileView
# ProfileView.@profview BAMF.genmodel!(datastate,sz,psf,data) # run once to trigger compilation (ignore this one)
# ProfileView.@profview BAMF.genmodel!(datastate,sz,psf,data)

# make data noisy
BAMF.poissrnd!(data.data)
# imshow(data.data)

## create a BAMF-type RJMCMC structure
xystd=σ/10
istd=10f0
split_std=σ/2
bndpixels=-20f0
myRJ=BAMF.RJStruct(sz,psf,xystd,istd,split_std,data,bndpixels,prior_photons)

## setup the RJMCMC.jl model
# Jumptypes are: move, bg, add, remove, split, merge
njumptypes=6
jumpprobability=[1,0,.1,.1,.1,.1]
jumpprobability=jumpprobability/sum(jumpprobability)

# create an RJMCMC structure with all model info
acceptfuns=[BAMF.accept_move,BAMF.accept_bg,BAMF.accept_add,BAMF.accept_remove,BAMF.accept_split,BAMF.accept_merge] #array of functions
propfuns=[BAMF.propose_move,BAMF.propose_bg,BAMF.propose_add,BAMF.propose_remove,BAMF.propose_split,BAMF.propose_merge] #array of functions
myRJMCMC=RJMCMC.RJMCMCStruct(burnin,iterations,njumptypes,jumpprobability,propfuns,acceptfuns)

#create an intial state
state1=BAMF.calcintialstate(myRJ)

## run chain
@time mychain=RJMCMC.buildchain(myRJMCMC,myRJ,state1);
# @time mychain=RJMCMC.buildchain(myRJMCMC,myRJ,datastate)

## Profiling
using ProfileView
ProfileView.@profview  mychain=RJMCMC.buildchain(myRJMCMC,myRJ,state1) # run once to trigger compilation (ignore this one)
ProfileView.@profview mychain=RJMCMC.buildchain(myRJMCMC,myRJ,state1)

## Display
# accepts,pl2=RJMCMC.showacceptratio(mychain)

zm=Int32(zoom)
plotly()
plt=BAMF.histogram2D(mychain.states,sz,zm,datastate)
display(plt)

map_n,posterior_n,traj_n=BAMF.getn(mychain.states)
plt2=plot(traj_n)
display(plt2)
# BAMF.showoverlay(mychain.states,myRJ)
postimage=BAMF.getposterior(mychain.states,sz,Int32(4))
heatmap(postimage)

## MAPN Results
states_mapn,n=BAMF.getmapnstates(mychain.states)
plt=BAMF.histogram2D(states_mapn,sz,zm,datastate)
display(plt)
Results_mapn=BAMF.getmapn(mychain.states)
BAMF.plotstate(datastate,Results_mapn)

## Testing the matlab interface

out=BAMF.matlab_SLIVER_FlatBG(data.data,data.type,data.invx,data.invy,"airy",ν,θ_start,θ_step,len,mypdf,Int32(burnin),Int32(iterations),xystd,istd,split_std,bndpixels)

# mex interface

args=[MATLAB.mxarray(data.data),MATLAB.mxarray(data.type),MATLAB.mxarray(data.invx),MATLAB.mxarray(data.invy),
MATLAB.mxarray("airy"),MATLAB.mxarray(ν),MATLAB.mxarray(θ_start),MATLAB.mxarray(θ_step),
MATLAB.mxarray(len),MATLAB.mxarray(mypdf),MATLAB.mxarray(Int32(burnin)),MATLAB.mxarray(Int32(iterations)),
MATLAB.mxarray(xystd),MATLAB.mxarray(istd),MATLAB.mxarray(split_std),MATLAB.mxarray(bndpixels)
]

BAMF.mextypes(args)
BAMF.mextest(args)

mapn=BAMF.matlab_SLIVER_FlatBG_mex(args)


text:
# This file was generated, do not modify it. # hide
ŷ = predict_mode(mtm, rows=test)
round(accuracy(ŷ, y[test]), sigdigits=3)

PyPlot.close_figs() # hide


text:
abstract type ClapeyronParam end

struct SingleParam{T} <: ClapeyronParam
    name::String
    values::Array{T,1}
    ismissingvalues::Array{Bool,1}
    components::Array{String,1}
    allcomponentsites::Array{Array{String,1},1}
    sourcecsvs::Array{String,1}
    sources::Array{String,1}
end

function Base.show(io::IO, param::SingleParam)
    print(io, typeof(param), "(\"", param.name, "\")[")
    for component in param.components
        component != first(param.components) && print(io, ",")
        print(io, "\"", component, "\"")
    end
    print(io, "]")
end

function Base.show(io::IO, ::MIME"text/plain", param::SingleParam)
    len = length(param.values)
    print(io, typeof(param), "(\"", param.name)
    println(io, "\") with ", len, " component", ifelse(len==1, ":", "s:"))
    i = 0
    for (name, val, miss) in zip(param.components, param.values, param.ismissingvalues)
        i += 1
        if i > 1
            println(io)
        end
        if miss == false
            if typeof(val) <: AbstractString
                print(io, " \"", name, "\" => \"", val, "\"")
            else
                print(io, " \"", name, "\" => ", val)
            end
        else
            print(io, " \"", name, " => -")
        end
    end
end

function SingleParam(x::SingleParam{T}) where T
    return SingleParam(x.name, deepcopy(x.values), deepcopy(x.ismissingvalues), x.components, x.allcomponentsites, deepcopy(x.sourcecsvs), deepcopy(x.sources))
end

#a barebones constructor, in case we dont build from csv
function SingleParam(
    name::String,
    components::Vector{String},
    values::Vector{T},
    ismissingvalues::Vector{Bool} = [ismissing for i = 1:length(value)],
    allcomponentsites = Array{Array{String,1},1}(undef,0),
    sourcecsvs = String[],
    sources = String[]
    ) where T<:Union{ <: Real,Missing}

    _values,_ismissingvalues = nondefaultmissing(values; defaultvalue=nothing)
    TT = eltype(_values)
    return  SingleParam{TT}(names, _values, _ismissingvalues, components, allcomponentsites, sourcecsvs, sources)
end

function SingleParam(x::SingleParam, v::Array{T,1}) where T
    return SingleParam(x.name, v, deepcopy(x.ismissingvalues), x.components, x.allcomponentsites, deepcopy(x.sourcecsvs), deepcopy(x.sources),)
end

struct PairParam{T} <: ClapeyronParam
    name::String
    values::Array{T,2}
    diagvalues::SubArray{T,1,Array{T,1},Tuple{Array{Int64,1}},false}
    ismissingvalues::Array{Bool,2}
    components::Array{String,1}
    allcomponentsites::Array{Array{String,1},1}
    sourcecsvs::Array{String,1}
    sources::Array{String,1}
    function PairParam(name::String, values::Array{T,2}, ismissingvalues::Array{Bool,2}, components::Array{String,1}, allcomponentsites::Array{Array{String,1},1}, sourcecsvs::Array{String,1}, sources::Array{String,1}) where T
        diagvalues = view(values, [1+(length(components)+1)*x for x in 0:length(components)-1])
        return new{T}(name, values, diagvalues, ismissingvalues, components, allcomponentsites, sourcecsvs, sources)
    end
end

function PairParam(x::PairParam{T}) where T
    return PairParam(x.name, deepcopy(x.values), deepcopy(x.ismissingvalues), x.components, x.allcomponentsites, deepcopy(x.sourcecsvs), deepcopy(x.sources))
end
function PairParam(x::SingleParam{T}) where T
    return PairParam(x.name, convertsingletopair(x.values), convert(Array{Bool},.!(convertsingletopair(convert(Array{Bool},.!(x.ismissingvalues))))), x.components, x.allcomponentsites, deepcopy(x.sourcecsvs), deepcopy(x.sources))
end

function PairParam(x::PairParam, v::Array{T,2}) where T
    return PairParam(x.name, v, deepcopy(x.ismissingvalues), x.components, x.allcomponentsites, deepcopy(x.sourcecsvs), deepcopy(x.sources))
end
function PairParam(x::SingleParam, v::Array{T,1}) where T
    return PairParam(x.name, convertsingletopair(v), convert(Array{Bool},.!(convertsingletopair(convert(Array{Bool},.!(x.ismissingvalues))))), x.components, x.allcomponentsites, deepcopy(x.sourcecsvs), deepcopy(x.sources))
end
function PairParam(x::SingleParam, v::Array{T,2}) where T
    return PairParam(x.name, v, convert(Array{Bool},.!(convertsingletopair(convert(Array{Bool},.!(x.ismissingvalues))))), x.components, x.allcomponentsites, deepcopy(x.sourcecsvs), deepcopy(x.sources))
end

function Base.show(io::IO,mime::MIME"text/plain",param::PairParam{T}) where T
    print(io,"PairParam{",string(T),"}")
    show(io,param.components)
    println(io,") with values:")
    show(io,mime,param.values)
end

function Base.show(io::IO,param::PairParam)
    print(io,"PairParam(",param.name)
    print(io,"\"",param.name,"\"",")[")
    for (name,val,miss,i) in zip(param.components,param.values,param.ismissingvalues,1:length(param.values))
        i != 1 && print(io,",")
        if miss == false
            print(io,name,"=",val)
        else
            print(io,name,"=","-")
        end
    end
    print(io,"]")
end

struct AssocParam{T} <: ClapeyronParam
    name::String
    values::Array{Array{T,2},2}
    ismissingvalues::Array{Array{Bool,2},2}
    components::Array{String,1}
    allcomponentsites::Array{Array{String,1},1}
    sourcecsvs::Array{String,1}
    sources::Array{String,1}
end

function AssocParam(x::AssocParam{T}) where T
    return PairParam{T}(x.name, deepcopy(x.values), deepcopy(x.ismissingvalues), x.components, x.allcomponentsites, deepcopy(x.sourcecsvs), deepcopy(x.sources))
end

function AssocParam{T}(x::AssocParam, v::Array{Array{T,2},2}) where T
    return AssocParam{T}(x.name, v, deepcopy(x.ismissingvalues), x.components, x.allcomponentsites, deepcopy(x.sourcecsvs), deepcopy(x.sources))
end

struct GroupParam <: ClapeyronParam
    components::Array{String,1}
    allcomponentgroups::Array{Array{String,1},1}
    allcomponentngroups::Array{Array{Int,1},1}
    flattenedgroups::Array{String,1}
    allcomponentnflattenedgroups::Array{Array{Int,1},1}
    sourcecsvs::Array{String,1}
end

function Base.show(io::IO, param::GroupParam)
    print(io,"GroupParam(")
    for component in param.components
        print(io, "\"", component, "\"")
        if (component != last(param.components))
            print(io, ",")
        end
    end
    println(io, ") with ", length(param.components), " components:", ifelse(len==1, ":", "s:"))
    for i in 1:length(param.components)
        print(io, " \"", param.components[i], "\": ")
        firstloop = true
        for j in 1:length(param.allcomponentngroups[i])
            firstloop == false && print(io, ", ")
            print(io, "\"", param.allcomponentgroups[i][j], "\" => ", param.allcomponentngroups[i][j])
            firstloop = false
        end
        i != length(param.components) && println(io)
    end
end

struct SiteParam <: ClapeyronParam
    components::Array{String,1}
    allcomponentsites::Array{Array{String,1},1}
    allcomponentnsites::Array{Array{Int,1},1}
    sourcecsvs::Array{String,1}
end

function SiteParam(pairs::Dict{String,SingleParam{Int}})
    arbitraryparam = first(values(pairs))
    components = arbitraryparam.components
    allcomponentsites = arbitraryparam.allcomponentsites
    sourcecsvs = unique([([x.sourcecsvs for x in values(pairs)]...)...])
    allcomponentnsites = [[pairs[allcomponentsites[i][j]].values[i] for j ∈ 1:length(allcomponentsites[i])] for i ∈ 1:length(components)]  # or groupsites
    return SiteParam(components, allcomponentsites, allcomponentnsites, sourcecsvs)
end

#empty SiteParam
function SiteParam(components::Vector{String})
    return SiteParam(components, [String[] for _ ∈ 1:length(components)], [Int[] for _ ∈ 1:length(components)], String[])
end

paramvals(param::ClapeyronParam) = param.values
paramvals(x) = x

export SingleParam, SiteParam, PairParam, AssocParam, GroupParam


text:
# # Little Group in 2D

# ## Preamble
using LatticeTools
using Formatting
using Plots

function display_matrix(io::IO, matrix::AbstractMatrix; prefix::AbstractString="")
    width = ceil(Int, maximum(length("$item")+1 for item in matrix)/4)*4
    for row in eachrow(matrix)
        for (icol, col) in enumerate(row)
            icol == 1 && print(io, prefix)
            printfmt(io, "{:>$(width)s}", "$col")
        end
        println(io)
    end
end

# ## Set up Lattice and Symmetry
unitcell = makeunitcell([1.0 0.0; 0.0 1.0]; SiteType=String);
addsite!(unitcell, "Ox", FractCoord([0,0], [0.5, 0.0]));
addsite!(unitcell, "Oy", FractCoord([0,0], [0.0, 0.5]));

lattice = makelattice(unitcell, [4 0; 0 4]);
tsym = FiniteTranslationSymmetry(lattice);
psym = project(PointSymmetryDatabase.get(13), [1 0 0; 0 1 0]);

# ## Little Group
lge = little_group_elements(tsym, 2, psym)
lg = little_group(tsym, 2, psym)
println("Little Group")
println("------------")
display_matrix(stdout, group_multiplication_table(lg))

lg_matrep = psym.matrix_representations[lge]
println("Matrix Representations: $lg_matrep")

# ## Finding Point Groups Isomorphic to the Little Group
little_symmetry_candidates = Tuple{PointSymmetry, Vector{Int}}[]
for i in 1:32
    ps = PointSymmetryDatabase.get(i)
    ϕ = group_isomorphism(lg, ps.group)
    if !isnothing(ϕ)
        push!(little_symmetry_candidates, (ps, ϕ))
    end
end
(psym2, ϕ) = first(little_symmetry_candidates)

lg_matrep2 = lg_matrep[ϕ]
println("Matrix Representations (Isomorphic): $lg_matrep2")

# ## Multiplication Tables
println("Parent Point Group")
println("------------------")
display_matrix(stdout, group_multiplication_table(psym2))
println("Little Group")
println("------------")
display_matrix(stdout, group_multiplication_table(lg_matrep))
println("Isomorphic Little Group")
println("-----------------------")
display_matrix(stdout, group_multiplication_table(lg_matrep2))

# ## Irreps and Little Groups

println("Irreps and Little Groups")
println("------------------------")
for tsic in get_irrep_components(tsym)
    idx = tsic.irrep_index
    kf = tsym.fractional_momenta[idx]
    k = lattice.unitcell.reducedreciprocallatticevectors * kf
    psym_little = little_symmetry(tsym, idx, psym)
    println("- irrep_index: $(idx)")
    println("  momentum: $(k)")
    println("  little_point_group: { name: \"$(psym_little.hermann_mauguin)\", order: $(group_order(psym_little)) }")
    println("  is_psym_compatible: $(iscompatible(tsym, idx, psym))")
    println("  is_psym_little_compatible: $(iscompatible(tsym, idx, psym_little))")
end


text:
function approximate(ost::MPSMultiline, toapprox::Tuple{<:MPOMultiline,<:MPSMultiline}, alg::Idmrg1, oenvs = environments(ost,toapprox))
    st = copy(ost);
    (mpo,above) = toapprox;
    envs = IDMRGEnv(ost,oenvs);

    delta::Float64 = 2*alg.tol_galerkin;

    for topit in 1:alg.maxiter
        delta = 0.0;

        curc = st.CR[:,0];

        for col in 1:size(st,2),row in 1:size(st,1)
            st.AC[row+1,col] = ac_prime(above.AC[row,col],mpo[row,col],leftenv(envs,row,col),rightenv(envs,row,col));
            normalize!(st.AC[row+1,col])

            (st.AL[row+1,col],st.CR[row+1,col]) = leftorth(st.AC[row+1,col]);

            setleftenv!(envs,row,col+1,normalize(transfer_left(leftenv(envs,row,col),mpo[row,col],above.AL[row,col],st.AL[row+1,col])));
        end

        for col in size(st,2):-1:1, row in 1:size(st,1)
            st.AC[row+1,col] = ac_prime(above.AC[row,col],mpo[row,col],leftenv(envs,row,col),rightenv(envs,row,col));
            normalize!(st.AC[row+1,col])

            (st.CR[row+1,col-1],temp) = rightorth(_transpose_tail(st.AC[row+1,col]));
            st.AR[row+1,col] = _transpose_front(temp);

            setrightenv!(envs,row,col-1,normalize(transfer_right(rightenv(envs,row,col),mpo[row,col],above.AR[row,col],st.AR[row+1,col])));

        end

        delta = norm(curc-st.CR[:,0]);
        delta<alg.tol_galerkin && break;
        alg.verbose && @info "idmrg iter $(topit) err $(delta)"
    end

    nst = MPSMultiline(map(x->x,st.AL),st.CR[:,end],tol=alg.tol_gauge);
    nenvs = environments(nst, toapprox)
    return nst,nenvs,delta;
end

function approximate(ost::MPSMultiline, toapprox::Tuple{<:MPOMultiline,<:MPSMultiline}, alg::Idmrg2, oenvs = environments(ost,toapprox))
    length(ost) < 2 && throw(ArgumentError("unit cell should be >= 2"))

    (mpo,above) = toapprox;
    st = copy(ost);
    envs = IDMRGEnv(ost,oenvs);

    delta::Float64 = 2*alg.tol_galerkin;

    for topit in 1:alg.maxiter
        delta = 0.0;

        curc = st.CR[:,0];

        #sweep from left to right
        for col in 1:size(st,2),row in 1:size(st,1)
            ac2 = above.AC[row,col]*_transpose_tail(above.AR[row,col+1]);

            vec = ac2_prime(ac2,mpo[row,col],mpo[row,col+1],leftenv(envs,row,col),rightenv(envs,row,col+1));
            (al,c,ar,ϵ) = tsvd(vec,trunc=alg.trscheme,alg=TensorKit.SVD())
            normalize!(c);

            st.AL[row+1,col] = al
            st.CR[row+1,col] = complex(c);
            st.AR[row+1,col+1] = _transpose_front(ar);
            #st.AC[row+1,col+1] = _transpose_front(c*_transpose_tail(ar));

            setleftenv!(envs,row,col+1,normalize(transfer_left(leftenv(envs,row,col),mpo[row,col],above.AL[row,col],st.AL[row+1,col])));
            setrightenv!(envs,row,col,normalize(transfer_right(rightenv(envs,row,col+1),mpo[row,col+1],above.AR[row,col+1],st.AR[row+1,col+1])))
        end

        #sweep from right to left
        for col in size(st,2)-1:-1:0,row in 1:size(st,1)
            ac2 = above.AL[row,col]*_transpose_tail(above.AC[row,col+1]);

            vec = ac2_prime(ac2,mpo[row,col],mpo[row,col+1],leftenv(envs,row,col),rightenv(envs,row,col+1));
            (al,c,ar,ϵ) = tsvd(vec,trunc=alg.trscheme,alg=TensorKit.SVD())
            normalize!(c);

            st.AL[row+1,col] = al
            st.CR[row+1,col] = complex(c);
            st.AR[row+1,col+1] = _transpose_front(ar);
            #st.AC[row+1,col] = al*c;

            setleftenv!(envs,row,col+1,normalize(transfer_left(leftenv(envs,row,col),mpo[row,col],above.AL[row,col],st.AL[row+1,col])));
            setrightenv!(envs,row,col,normalize(transfer_right(rightenv(envs,row,col+1),mpo[row,col+1],above.AR[row,col+1],st.AR[row+1,col+1])))
        end

        delta = sum(map(zip(curc,st.CR[:,0])) do (c1,c2)
            #update error
            smallest = infimum(_firstspace(c1),_firstspace(c2));
            e1 = isometry(_firstspace(c1),smallest);
            e2 = isometry(_firstspace(c2),smallest);
            delta = norm(e2'*c2*e2-e1'*c1*e1)
        end)
        alg.verbose && @info "idmrg iter $(topit) err $(delta)"

        delta<alg.tol_galerkin && break;

    end

    nst = MPSMultiline(map(x->x,st.AL),st.CR[:,end],tol=alg.tol_gauge);
    nenvs = environments(nst, toapprox)
    return nst,nenvs,delta;
end