You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: hamilton_default.rb
    path of file: ./repos/sequencescape/app/models/robot/generator/behaviours
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

# Module with the file generation functionality for Hamilton robots
module Robot::Generator::Behaviours::HamiltonDefault
  COLUMN_HEADERS = %w[
    SourcePlateID
    SourceWellID
    SourcePlateType
    SourcePlateVolume
    DestinationPlateID
    DestinationWellID
    DestinationPlateType
    DestinationPlateVolume
    WaterVolume
  ].freeze

  # Formats values in the data object into output rows for the file
  def mapping(data_object = picking_data)
    raise ArgumentError, 'Data object not present for Ha
    
  def source_mappings(data_object) # rubocop:todo Metrics/AbcSize
    source_mappings = ''
    each_mapping(data_object) do |mapping, destination_plate_barcode, plate_details|
      source_plate_barcode = (mapping['src_well'][0]).to_s
      source_well_position = mapping['src_well'][1]
      source_plate_type = data_object['source'][(mapping['src_well'][0]).to_s]['name']
      destination_well_position = mapping['dst_well']
      destination_plate_type = plate_details['name']
      current_row =
        [
          source_plate_barcode,
          source_well_position,
          source_plate_type,
          hamilton_precision_value(mapping['volume']).to_s,
          destination_plate_barcode,
          destination_well_position,
          destination_plate_type,
          hamilton_precision_value(mapping['volume']).to_s,
          hamilton_precision_value(mapping['buffer_volume']).to_s
        ].join(',')
      source_mappings += "#{current_row}\n"
    end
    source_mappings
  end