docs: def add_well(self, well_x, well_y, start_x, start_y):
          """Add well with associated scan fields. ``self.wells[0]`` and
          ``self.fields[0]`` will be used as base. ScanWellData will be added to
          ScanWellArray and ScanFieldData to ScanFieldArray. The amount of fields
          added is decided by Properties/CountOfScanFields.
  
          Parameters
          ----------
          well_x : int
          well_y : int
          start_x : int
              In meters. FieldXCoordinate of first field in well.
          start_y : int
              In meters. FieldYCoordinate of first field in well.
  
          Raises
          ------
          ValueError
              If well or fields already exists.
          """
          # raise ValueError if well already exists
          if self.well_exists(well_x, well_y):
              raise ValueError('Well already exists in ScanWellArray')
  
          if len(self.well_fields(well_x, well_y)) != 0:
              raise ValueError('Fields belonging to well already exists in ScanFieldArray')
  
          base_well = deepcopy(self.wells[0])
  
          # append well to ScanWellArray
          base_well.attrib['WellX'] = str(well_x)
          base_well.attrib['WellY'] = str(well_y)
          base_well.attrib['FieldXStartCoordinate'] = str(start_x)
          base_well.attrib['FieldYStartCoordinate'] = str(start_y)
          self.well_array.append(base_well)
  
          # append fields to ScanFieldArray
          x_fields = int(self.properties.CountOfScanFieldsX)
          y_fields = int(self.properties.CountOfScanFieldsY)
          x_dist = float(self.properties.ScanFieldStageDistanceX) * 1e-6 # in um
          y_dist = float(self.properties.ScanFieldStageDistanceY) * 1e-6
          x_label = str(self.properties.TextWellPlateHorizontal[well_x - 1])
          y_label = str(self.properties.TextWellPlateVertical[well_y - 1])
  
          for i in range(x_fields):
              for j in range(y_fields):
                  base_field = deepcopy(self.fields[0])
  
                  base_field.FieldXCoordinate = start_x + i*x_dist
                  base_field.FieldYCoordinate = start_y + j*y_dist
  
                  base_field.attrib['WellX'] = str(well_x)
                  base_field.attrib['WellY'] = str(well_y)
  
                  base_field.attrib['FieldX'] = str(i+1)
                  base_field.attrib['FieldY'] = str(j+1)
  
                  base_field.attrib['LabelX'] = x_label
                  base_field.attrib['LabelY'] = y_label
  
                  self.field_array.append(base_field)