code: def create(self, name, dim, prior, q):
             
  
          def rec(dim, prev=[]):
             if len(dim) > 0:
                 return [rec(dim[1:], prev + [i]) for i in range(dim[0])]
             else:
                 return "(" + ",".join([str(j) for j in prev]) + ")" 
  
          indices = rec(dim)
  
          for f_dim in range(1, len(dim)):
              indices = sum(indices, [])
  
          if self.z_list is None:
              starting_index = 0
          else:
              starting_index = len(self.z_list)
  
          self.z_indices[name] = {'start': starting_index, 'end': starting_index+len(indices)-1, 'dim': len(dim)}
  
          for index in indices:
              self.add_z(name + " " + index, prior, q, index=False)
docs: Creates multiple latent variables
  
          Parameters
          ----------
          name : str
              Name of the latent variable
  
          dim : list
              Dimension of the latent variable arrays
  
          prior : Prior object
              Which prior distribution? E.g. Normal(0,1)
  
          q : Distribution object
              Which distribution to use for variational approximation
  
          Returns
          ----------
          None (changes priors in LatentVariables object)