Currently the type signature here is restricted `Union(Symmetric{T<:BlasReal}, Hermitian{T<:BlasReal})`, which should be safe. The code is duplicated for `BlasComplex`, but I don't see a way out of that. Using `RealHermSymComplexHerm` would give the type signature `Union(Symmetric{T<:BlasReal}, Hermitian{T<:BlasReal}, Hermitian{Complex{T<:BlasReal}})`, which doesn't seem quite right since then e.g. `A` could be real and `B` could be complex.