code: def jsondeclarations(self):
          
          l = []
          for annotationtype, set in self.annotations:
              label = None
              #Find the 'label' for the declarations dynamically (aka: AnnotationType --> String)
              for key, value in vars(AnnotationType).items():
                  if value == annotationtype:
                      label = key
                      break
              #gather attribs
  
              if (annotationtype == AnnotationType.TEXT or annotationtype == AnnotationType.PHON) and set == 'undefined' and len(self.annotationdefaults[annotationtype][set]) == 0:
                  #this is the implicit TextContent declaration, no need to output it explicitly
                  continue
  
              jsonnode = {'annotationtype': label.lower()}
              if set and set != 'undefined':
                  jsonnode['set'] = set
  
  
              for key, value in self.annotationdefaults[annotationtype][set].items():
                  if key == 'annotatortype':
                      if value == AnnotatorType.MANUAL:
                          jsonnode[key] = 'manual'
                      elif value == AnnotatorType.AUTO:
                          jsonnode[key] = 'auto'
                  elif key == 'datetime':
                      jsonnode[key] = value.strftime("%Y-%m-%dT%H:%M:%S") #proper iso-formatting
                  elif value:
                      jsonnode[key] = value
              if label:
                  l.append( jsonnode  )
              else:
                  raise Exception("Invalid annotation type")
          return l
docs: Return all declarations in a form ready to be serialised to JSON.
  
          Returns:
              list of dict