code: def override(self, item, value):
          
          if not hasattr(self, item):
              raise KeyError("Soil Object does not have property: %s", item)
          try:
              setattr(self, item, value)  # try to set using normal setter method
              return []
          except ModelError:
              pass  # if inconsistency, then need to rebuild stack
          # create a new temporary stack
          temp_stack = list(self.stack)
          # remove item from original position in stack
          temp_stack[:] = (value for value in temp_stack if value[0] != item)
          # add item to the start of the stack
          temp_stack.insert(0, (item, value))
          # clear object, ready to rebuild
          self.reset_all()
          # reapply trace, one item at a time, if conflict then don't add the conflict.
          conflicts = []
          for item, value in temp_stack:
              # catch all conflicts
              try:
                  setattr(self, item, value)
              except ModelError:
                  conflicts.append(item)
          return conflicts
docs: Can set a parameter to a value that is inconsistent with existing values.
  
          This method sets the inconsistent value and then reapplies all existing values
          that are still consistent, all non-consistent (conflicting) values are removed from the object
          and returned as a list
  
          :param item: name of parameter to be set
          :param value: value of the parameter to be set
          :return: list, conflicting values