code: def decline_noun(self, noun, gender, mimation=True):
          
          stem = self.stemmer.get_stem(noun, gender)
          declension = []
          for case in self.endings[gender]['singular']:
              if gender == 'm':
                  form = stem + self.endings[gender]['singular'][case]
              else:
                  form = stem + self.endings[gender]['singular'][case][1:]
              declension.append((form, {'case': case, 'number': 'singular'}))
          for case in self.endings[gender]['dual']:
              if gender == 'm':
                  form = stem + self.endings[gender]['dual'][case]
              else:
                  form = stem + self.endings[gender]['dual'][case][1:]
              declension.append((form, {'case': case, 'number': 'dual'}))
          for case in self.endings[gender]['plural']:
              if gender == 'm':
                  form = stem + self.endings[gender]['plural'][case]
              else:
                  if stem[-3] in self.akkadian['macron_vowels']:
                      theme_vowel = stem[-3]
                  else:
                      theme_vowel = 'ā'
                  ending = [x for x in self.endings[gender]['plural'][case] if x[0] == theme_vowel]
                  if stem[-2] in self.akkadian['short_vowels']:
                      form = stem[:-2] + ending[0]
                  elif stem[-1] in self.akkadian['consonants'] and stem[-2] in self.akkadian['macron_vowels']:
                      form = stem + ending[0]
                  else:
                      form = stem[:-1] + ending[0]
              declension.append((form, {'case': case, 'number': 'plural'}))
          return declension
docs: Return a list of all possible declined forms given any form
           of a noun and its gender.