class_docstr: Base class for BNNs that are made from other BNNs.
code: def get_all_distributions(self):
      distributions = self.distributions()
      for idx, sub_bnn in enumerate(self.bnns):
          d = sub_bnn.get_all_distributions()
          if d:
              distributions[f"bnns_{idx}"] = d
      return distributions
  
imports: from typing import Optional
  from flax import linen
  import jax.numpy
  from tensorflow_probability.python.experimental.autobnn import bnn
  from tensorflow_probability.python.experimental.autobnn import likelihoods
  from tensorflow_probability.substrates.jax.bijectors import chain
  from tensorflow_probability.substrates.jax.bijectors import scale
  from tensorflow_probability.substrates.jax.bijectors import shift
  from tensorflow_probability.substrates.jax.distributions import beta
  from tensorflow_probability.substrates.jax.distributions import dirichlet
  from tensorflow_probability.substrates.jax.distributions import half_normal
  from tensorflow_probability.substrates.jax.distributions import normal
  from tensorflow_probability.substrates.jax.distributions import transformed_distribution
label_desc: Use image node_id 4 for calling the BnnOperator obj's underlying member method code with example usage: obj.get_all_distributions() and returns: distributions