docs: def build(self, builder):
          """
          Build XML by appending to builder
          """
          params = dict(ItemOID=self.itemoid)
  
          if self.transaction_type is not None:
              params["TransactionType"] = self.transaction_type
  
          if self.value in [None, '']:
              params['IsNull'] = 'Yes'
          else:
              params['Value'] = str(self.value)
  
          if self.specify_value is not None:
              params['mdsol:SpecifyValue'] = self.specify_value
  
          if self.lock is not None:
              params['mdsol:Lock'] = bool_to_yes_no(self.lock)
  
          if self.freeze is not None:
              params['mdsol:Freeze'] = bool_to_yes_no(self.freeze)
  
          if self.verify is not None:
              params['mdsol:Verify'] = bool_to_yes_no(self.verify)
  
          # mixins
          self.mixin()
          self.mixin_params(params)
  
          builder.start("ItemData", params)
  
          if self.audit_record is not None:
              self.audit_record.build(builder)
  
          # Measurement unit ref must be after audit record or RWS complains
          if self.measurement_unit_ref is not None:
              self.measurement_unit_ref.build(builder)
  
          for query in self.queries:  # type: MdsolQuery
              query.build(builder)
  
          for deviation in self.deviations:  # type: MdsolProtocolDeviation
              deviation.build(builder)
  
          for annotation in self.annotations:  # type: Annotation
              annotation.build(builder)
  
          builder.end("ItemData")