docs: def updateFeatureService(self, efs_config):
          """Updates a feature service.
          
          Args:
              efs_config (list): A list of JSON configuration feature service details to update.
          Returns:
              dict: A dictionary of results objects.
          
          """
          if self.securityhandler is None:
              print ("Security handler required")
              return
          fsRes = None
          fst = None
          fURL = None
          resItm= None
          try:
  
              fsRes = []
              fst = featureservicetools.featureservicetools(securityinfo=self)
  
  
              if isinstance(efs_config, list):
                  for ext_service in efs_config:
                      fURL = None
                      cs = 0
                      try:
                          if 'ChunkSize' in ext_service:
                              if common.is_number(ext_service['ChunkSize']):
                                  cs = ext_service['ChunkSize']
                      except Exception as e:
                          pass
                      resItm={"DeleteDetails": None,"AddDetails":None}
                      if 'ItemId' in ext_service and 'LayerName' in ext_service:
                          fs = fst.GetFeatureService(itemId=ext_service['ItemId'],returnURLOnly=False)
                          if not fs is None:
                              fURL = fst.GetLayerFromFeatureService(fs=fs,layerName=ext_service['LayerName'],returnURLOnly=True)
                      if fURL is None and 'URL' in ext_service:
  
                          fURL = ext_service['URL']
                      if fURL is None:
                          print("Item and layer not found or URL not in config")
                          continue
  
                      if 'DeleteInfo' in ext_service:
                          if str(ext_service['DeleteInfo']['Delete']).upper() == "TRUE":
                              resItm['DeleteDetails'] = fst.DeleteFeaturesFromFeatureLayer(url=fURL, sql=ext_service['DeleteInfo']['DeleteSQL'],chunksize=cs)
                              if not 'error' in resItm['DeleteDetails'] :
                                  print ("Delete Successful: %s" % fURL)
                              else:
                                  print (str(resItm['DeleteDetails']))
  
                      resItm['AddDetails'] = fst.AddFeaturesToFeatureLayer(url=fURL, pathToFeatureClass = ext_service['FeatureClass'],chunksize=cs)
  
                      fsRes.append(resItm)
  
                      if not 'error' in resItm['AddDetails']:
                          print ("Add Successful: %s " % fURL)
                      else:
                          print (str(resItm['AddDetails']))
  
              else:
                  resItm={"DeleteDetails": None,"AddDetails":None}
                  fURL = efs_config['URL']
                  cs = 0
                  try:
                      if 'ChunkSize' in efs_config:
                          if common.is_number(efs_config['ChunkSize']):
                              cs = efs_config['ChunkSize']
                  except Exception as e:
                      pass
                  if 'ItemId' in efs_config and 'LayerName' in efs_config:
                      fs = fst.GetFeatureService(itemId=efs_config['ItemId'],returnURLOnly=False)
                      if not fs is None:
                          fURL = fst.GetLayerFromFeatureService(fs=fs,layerName=efs_config['LayerName'],returnURLOnly=True)
                  if fURL is None and 'URL' in efs_config:
  
                      fURL = efs_config['URL']
                  if fURL is None:
                      print("Item and layer not found or URL not in config")
                      return None
                  if 'DeleteInfo' in efs_config:
                      if str(efs_config['DeleteInfo']['Delete']).upper() == "TRUE":
                          resItm['DeleteDetails'] = fst.DeleteFeaturesFromFeatureLayer(url=fURL, sql=efs_config['DeleteInfo']['DeleteSQL'],chunksize=cs)
                          if not 'error' in resItm['DeleteDetails'] :
                              print ("            Delete Successful: %s" % fURL)
                          else:
                              print ("            " + str(resItm['DeleteDetails']))
  
                  resItm['AddDetails'] = fst.AddFeaturesToFeatureLayer(url=fURL, pathToFeatureClass = efs_config['FeatureClass'],chunksize=cs)
  
                  fsRes.append(resItm)
  
                  if not 'error' in resItm['AddDetails']:
                      print ("            Add Successful: %s " % fURL)
                  else:
                      print ("            " + str(resItm['AddDetails']))
  
              return fsRes
  
          except common.ArcRestHelperError as e:
              raise e
          except Exception as e:
  
              line, filename, synerror = trace()
              raise common.ArcRestHelperError({
                  "function": "updateFeatureService",
                  "line": line,
                  "filename":  filename,
                  "synerror": synerror,
              })
          finally:
              fst = None
              fURL = None
              resItm= None
  
              del fst
              del fURL
              del resItm
  
              gc.collect()