I am struggling to come up with a sufficiently specific method signature to handle the Cholesky decomposition of heterogeneous blocked matrices, by which I mean that I have a square matrix of `AbstractMatrix{Float64}`

, say, but the lower-level matrices can be of different storage types: dense, sparse, diagonal, etc.

I can define the union of all the possible storage types

```
typealias Block{T} Union{Diagonal{T}, Diagonal{StaticArrays.MMatrix},
Hermitian{T, Matrix{T}}, LowerTriangular{T, Matrix{T}}, Matrix{T}}
```

but I don’t think `AbstractMatrix{Block{T}}`

is meaningful in a method signature. Or at least I can’t seem to get it to work.

Currently I am patterning my code after the (unreleased) `LinearAlgebra`

package by @andreasnoack. I want to create a method for his `cholBlocked!`

function that will apply to my blocked matrices or square views of them and is more specific than `AbstractMatrix`

. I need to somehow characterize `AbstractMatrix{AbstractMatrix{Float64}}`

.

The gory details are in https://github.com/dmbates/MixedModels.jl/tree/LowerCholesky Look for the string `cholBlocked!`

in the src tree.