code: def addAggShkDstn(self,AggShkDstn):
          '''
          Variation on AggShockConsumerType.addAggShkDstn that handles the Markov
          state. AggShkDstn is a list of aggregate productivity shock distributions
          for each Markov state.
          '''
          if len(self.IncomeDstn[0][0]) > 3:
              self.IncomeDstn = self.IncomeDstnWithoutAggShocks
          else:
              self.IncomeDstnWithoutAggShocks = self.IncomeDstn
  
          IncomeDstnOut = []
          N = self.MrkvArray.shape[0]
          for t in range(self.T_cycle):
              IncomeDstnOut.append([combineIndepDstns(self.IncomeDstn[t][n],AggShkDstn[n]) for n in range(N)])
          self.IncomeDstn = IncomeDstnOuf addAggShkDstn(self,AggShkDstn):
          '''
          Variation on AggShockConsumerType.addAggShkDstn that handles the Markov
          state. AggShkDstn is a list of aggregate productivity shock distributions
          for each Markov state.
          '''
          if len(self.IncomeDstn[0][0]) > 3:
              self.IncomeDstn = self.IncomeDstnWithoutAggShocks
          else:
              self.IncomeDstnWithoutAggShocks = self.IncomeDstn
  
          IncomeDstnOut = []
          N = self.MrkvArray.shape[0]
          for t in range(self.T_cycle):
              IncomeDstnOut.append([combineIndepDstns(self.IncomeDstn[t][n],AggShkDstn[n]) for n in range(N)])
          self.IncomeDstn = IncomeDstnOut
docs: Variation on AggShockConsumerType.addAggShkDstn that handles the Markov
          state. AggShkDstn is a list of aggregate productivity shock distributions
          for each Markov state.