code: def get_extensions(extstr):
      
      # Extension examples:
      #   has_direct_input(UniProtKB:P37840),occurs_in(GO:0005576)
      #   part_of(UBERON:0006618),part_of(UBERON:0002302)
      #   occurs_in(CL:0000988)|occurs_in(CL:0001021)
      if not extstr:
          return None
      exts = []
      for ext_lst in extstr.split('|'):
          grp = []
          for ext in ext_lst.split(','):
              idx = ext.find('(')
              if idx != -1 and ext[-1] == ')':
                  grp.append(AnnotationExtension(ext[:idx], ext[idx+1:-1]))
              else:
                  # Ignore improperly formatted Extensions
                  sys.stdout.write('BAD Extension({E})\n'.format(E=ext))
          exts.append(grp)
      return AnnotationExtensions(exts)
docs: Return zero or greater Annotation Extensions, given a line of text.