docs: def update_lipd_v1_1(d):
      """
      Update LiPD v1.0 to v1.1
      - chronData entry is a list that allows multiple tables
      - paleoData entry is a list that allows multiple tables
      - chronData now allows measurement, model, summary, modelTable, ensemble, calibratedAges tables
      - Added 'lipdVersion' key
  
      :param dict d: Metadata v1.0
      :return dict d: Metadata v1.1
      """
      logger_versions.info("enter update_lipd_v1_1")
      tmp_all = []
  
      try:
          # ChronData is the only structure update
          if "chronData" in d:
              # As of v1.1, ChronData should have an extra level of abstraction.
              # No longer shares the same structure of paleoData
  
              # If no measurement table, then make a measurement table list with the table as the entry
              for table in d["chronData"]:
                  if "chronMeasurementTable" not in table:
                      tmp_all.append({"chronMeasurementTable": [table]})
  
                  # If the table exists, but it is a dictionary, then turn it into a list with one entry
                  elif "chronMeasurementTable" in table:
                      if isinstance(table["chronMeasurementTable"], dict):
                          tmp_all.append({"chronMeasurementTable": [table["chronMeasurementTable"]]})
              if tmp_all:
                  d["chronData"] = tmp_all
  
          # Log that this is now a v1.1 structured file
          d["lipdVersion"] = 1.1
      except Exception as e:
          logger_versions.error("update_lipd_v1_1: Exception: {}".format(e))
      logger_versions.info("exit update_lipd_v1_1")
      return d