Type hierarchy
The type hierarchy is implemented in "src/types.jl".
AbstractSem: the most abstract type in our package
AbstractSemSingle{O, I, L} <: AbstractSemis an abstract parametric type that is a supertype of all single modelsSem: models that do not need automatic differentiation or finite difference approximationSemFiniteDiff: models whose gradients and/or hessians should be computed via finite difference approximation
AbstractSemCollection <: AbstractSemis an abstract supertype of all models that contain multipleAbstractSemsubmodels
Every AbstractSemSingle has to have SemObserved, SemImplied, and SemLoss fields (and can have additional fields).
SemLoss is a container for multiple SemLossFunctions.