docs: def add_extension_val(self,
                            subj: Node,
                            json_obj:
                            Union[JsonObj, List[JsonObjTypes]],
                            key: str,
                            pred: Optional[URIRef] = None) -> None:
          """
          Add any extensions for the supplied object. This can be called in following situations:
          1) Single extended value 
                  "key" : (value),
                  "_key" : {
                      "extension": [
                         {
                          "url": "http://...",
                          "value[x]": "......" 
                         }
                      ]
                  }
          2) Single extension only
                  "_key" : {
                      "extension": [
                         {
                          "url": "http://...",
                          "value[x]": "......" 
                         }
                      ]
                  }
          3) Multiple extended values:
                  (TBD)
                  
          4) Multiple extensions only
                  "_key" : [
                    { 
                      "extension": [
                         {
                          "url": "http://...",
                          "value[x]": "......" 
                         }
                      ]
                    }
                  ]
                      
          :param subj: Node containing subject
          :param json_obj: Object (potentially) containing "_key"
          :param key: name of element that is possibly extended (as indicated by "_" prefix)
          :param pred: predicate for the contained elements. Only used in situations 3) (?) and 4 
          """
          extendee_name = "_" + key
          if extendee_name in json_obj:
              if not isinstance(subj, BNode):
                  raise NotImplementedError("Extension to something other than a simple BNode")
              if isinstance(json_obj[extendee_name], list):
                  if not pred:
                      raise NotImplemented("Case 3 not implemented")
                  entry_idx = 0
                  for extension in json_obj[extendee_name]:
                      entry = BNode()
                      self.add(entry, FHIR.index, Literal(entry_idx))
                      self.add_val(entry, FHIR.Element.extension, extension, 'extension')
                      self.add(subj, pred, entry)
                      entry_idx += 1
              elif 'fhir_comments' in json_obj[extendee_name] and len(json_obj[extendee_name]) == 1:
                  # TODO: determine whether and how fhir comments should be represented in RDF.
                  # for the moment we just drop them
                  print("fhir_comment ignored")
                  print(json_obj[extendee_name]._as_json_dumps())
                  pass
              else:
                  self.add_val(subj, FHIR.Element.extension, json_obj[extendee_name], 'extension')