<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _validate_isvalid_uncertainty(self, isvalid_uncertainty, field, value):
 """Checks for valid given value and appropriate units with uncertainty. Args: isvalid_uncertainty (`bool`):
 flag from schema indicating uncertainty to be checked field (`str`):
 property associated with the quantity in question. value (`list`):
 list with the string of the value of the quantity and a dictionary of the uncertainty The rule's arguments are validated against this schema: {'isvalid_uncertainty': {'type': 'bool'}, 'field': {'type': 'str'}, 'value': {'type': 'list'}} """

        self._validate_isvalid_quantity(True, field, value)

        # This len check is necessary for reasons that aren't quite clear to me
        # Cerberus calls this validation method even when lists have only one element
        # and should therefore be validated only by isvalid_quantity
        if len(value) > 1 and value[1]['uncertainty-type'] != 'relative':
            if value[1].get('uncertainty') is not None:
                self._validate_isvalid_quantity(True, field, [value[1]['uncertainty']])

            if value[1].get('upper-uncertainty') is not None:
                self._validate_isvalid_quantity(True, field, [value[1]['upper-uncertainty']])

            if value[1].get('lower-uncertainty') is not None:
                self._validate_isvalid_quantity(True, field, [value[1]['lower-uncertainty']])