code: def getNonDefaultsDict(self):
          
          dct = self._nodeGetNonDefaultsDict()
  
          childList = []
          for childCti in self.childItems:
              childDct = childCti.getNonDefaultsDict()
              if childDct:
                  childList.append(childDct)
          if childList:
              dct['childItems'] = childList
  
          if dct:
              dct['nodeName'] = self.nodeName
  
          return dct
docs: Recursively retrieves values as a dictionary to be used for persistence.
              Does not save defaultData and other properties, only stores values if they differ from
              the defaultData. If the CTI and none of its children differ from their default, a
              completely empty dictionary is returned. This is to achieve a smaller json
              representation.
  
              Typically descendants should override _nodeGetNonDefaultsDict instead of this function.