code: def cooccurrenceCounts(self, keyTag, *countedTags):
          if not isinstance(keyTag, str):
              raise TagError("'{}' is not a string it cannot be used as a tag.".format(keyTag))
          if len(countedTags) < 1:
              TagError("You need to provide atleast one tag")
          for tag in countedTags:
              if not isinstance(tag, str):
                  raise TagError("'{}' is not a string it cannot be used as a tag.".format(tag))
          occurenceDict = {}
          progArgs = (0, "Starting to count the co-occurrences of '{}' and' {}'".format(keyTag, "','".join(countedTags)))
          if metaknowledge.VERBOSE_MODE:
              progKwargs = {'dummy' : False}
          else:
              progKwargs = {'dummy' : True}
          with _ProgressBar(*progArgs, **progKwargs) as PBar:
              for i, R in enumerate(self):
                  PBar.updateVal(i / len(self), "Analyzing {}".format(R))
                  keyVal = R.get(keyTag)
                  if keyVal is None:
                      continue
                  if not isinstance(keyVal, list):
                      keyVal = [keyVal]
                  for key in keyVal:
                      if key not in occurenceDict:
                          occurenceDict[key] = {}
                  for tag in countedTags:
                      tagval = R.get(tag)
                      if tagval is None:
                          continue
                      if not isinstance(tagval, list):
                          tagval = [tagval]
                      for val in tagval:
                          for key in keyVal:
                              try:
                                  occurenceDict[key][val] += 1
                              except KeyError:
                                  occurenceDict[key][val] = 1
              PBar.finish("Done extracting the co-occurrences of '{}' and '{}'".format(keyTag, "','".join(countedTags)))
          return occurenceDict