Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module.
function newSpvec() result(o)
type(spvec_t)::o
allocate(o%i(0))
allocate(o%v(0))
end function newSpvec