code: def addAggShkDstn(self,AggShkDstn):
          '''
          Updates attribute IncomeDstn by combining idiosyncratic shocks with aggregate shocks.
  
          Parameters
          ----------
          AggShkDstn : [np.array]
              Aggregate productivity shock distribution.  First element is proba-
              bilities, second element is agg permanent shocks, third element is
              agg transitory shocks.
  
          Returns
          -------
          None
          '''
          if len(self.IncomeDstn[0]) > 3:
              self.IncomeDstn = self.IncomeDstnWithoutAggShocks
          else:
              self.IncomeDstnWithoutAggShocks = self.IncomeDstn
          self.IncomeDstn = [combineIndepDstns(self.IncomeDstn[t],AggShkDstn) for t in range(self.T_cycle)f addAggShkDstn(self,AggShkDstn):
          '''
          Updates attribute IncomeDstn by combining idiosyncratic shocks with aggregate shocks.
  
          Parameters
          ----------
          AggShkDstn : [np.array]
              Aggregate productivity shock distribution.  First element is proba-
              bilities, second element is agg permanent shocks, third element is
              agg transitory shocks.
  
          Returns
          -------
          None
          '''
          if len(self.IncomeDstn[0]) > 3:
              self.IncomeDstn = self.IncomeDstnWithoutAggShocks
          else:
              self.IncomeDstnWithoutAggShocks = self.IncomeDstn
          self.IncomeDstn = [combineIndepDstns(self.IncomeDstn[t],AggShkDstn) for t in range(self.T_cycle)]
docs: Updates attribute IncomeDstn by combining idiosyncratic shocks with aggregate shocks.
  
          Parameters
          ----------
          AggShkDstn : [np.array]
              Aggregate productivity shock distribution.  First element is proba-
              bilities, second element is agg permanent shocks, third element is
              agg transitory shocks.
  
          Returns
          -------
          None