code: def apply_boundary_conditions(self, **params):
          
          for dist in self.distributions:
              params.update(dist.apply_boundary_conditions(**params))
          return params
docs: Applies each distributions' boundary conditions to the given list
          of parameters, returning a new list with the conditions applied.
  
          Parameters
          ----------
          **params :
              Keyword arguments should give the parameters to apply the
              conditions to.
  
          Returns
          -------
          dict
              A dictionary of the parameters after each distribution's
              `apply_boundary_conditions` function has been applied.