require 'default.rb'
require 'soap/mapping'

module DefaultMappingRegistry
  EncodedRegistry = ::SOAP::Mapping::EncodedRegistry.new
  LiteralRegistry = ::SOAP::Mapping::LiteralRegistry.new
  NsWSG4SICOM = "http://WS.G4SI.COM/"

  EncodedRegistry.register(
    :class => PriceEstimateResponse,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "PriceEstimateResponse"),
    :schema_element => [
      ["baseCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "BaseCharges")]],
      ["fuelSurCharge", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "FuelSurCharge")]],
      ["additionalWeightCharge", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "AdditionalWeightCharge")]],
      ["schedulePickupCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "SchedulePickupCharges")]],
      ["saturdayPickupCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "SaturdayPickupCharges")]],
      ["adultSignatureCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "AdultSignatureCharges")]],
      ["directSignatureCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "DirectSignatureCharges")]],
      ["errorCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ErrorCode")], [0, 1]],
      ["errorDescription", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ErrorDescription")], [0, 1]],
      ["innerException", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "InnerException")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => G4SIAuthentication,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "G4SIAuthentication"),
    :schema_element => [
      ["username", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Username")], [0, 1]],
      ["password", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Password")], [0, 1]],
      ["accessKey", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "AccessKey")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentRequest,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ShipmentRequest"),
    :schema_element => [
      ["commodityCollection", ["ArrayOfCommodityList", XSD::QName.new(NsWSG4SICOM, "CommodityCollection")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsWSG4SICOM, "ShipmentDate")]],
      ["billFreightTo", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BillFreightTo")], [0, 1]],
      ["serviceLevelName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ServiceLevelName")], [0, 1]],
      ["packageTypeName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PackageTypeName")], [0, 1]],
      ["declaredWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "DeclaredWeight")]],
      ["declareValue", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "DeclareValue")]],
      ["weightType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "WeightType")], [0, 1]],
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Description")], [0, 1]],
      ["dimensions", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Dimensions")], [0, 1]],
      ["dimensionUnitType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "DimensionUnitType")], [0, 1]],
      ["thermalPrinter", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ThermalPrinter")]],
      ["sEDNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SEDNumber")], [0, 1]],
      ["dutiesPayorType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "DutiesPayorType")], [0, 1]],
      ["recipientAddress", ["G4sTracking::Address", XSD::QName.new(NsWSG4SICOM, "RecipientAddress")], [0, 1]],
      ["saveNewRecipientAddress", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SaveNewRecipientAddress")]],
      ["shipperAddress", ["G4sTracking::Address", XSD::QName.new(NsWSG4SICOM, "ShipperAddress")], [0, 1]],
      ["cODAmount", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CODAmount")]],
      ["holdAtLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "HoldAtLocation")]],
      ["schedulePickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SchedulePickup")]],
      ["schedulePickupLocation", ["SchedulePickup", XSD::QName.new(NsWSG4SICOM, "SchedulePickupLocation")], [0, 1]],
      ["cODInfo", ["COD", XSD::QName.new(NsWSG4SICOM, "CODInfo")], [0, 1]],
      ["holdAtLocationInfo", ["HoldAtLocation", XSD::QName.new(NsWSG4SICOM, "HoldAtLocationInfo")], [0, 1]],
      ["purchaseOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PurchaseOrderNumber")], [0, 1]],
      ["salesOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SalesOrderNumber")], [0, 1]],
      ["brokerInfo", ["BrokerInfo", XSD::QName.new(NsWSG4SICOM, "BrokerInfo")], [0, 1]],
      ["recipientShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RecipientShipNotification")]],
      ["receiveAlerts", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ReceiveAlerts")]],
      ["saturdayDelivery", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SaturdayDelivery")]],
      ["saturdayPickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SaturdayPickup")]],
      ["residential", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "Residential")]],
      ["signatureOption", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SignatureOption")], [0, 1]],
      ["recipientAlertEmail", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "RecipientAlertEmail")], [0, 1]],
      ["recipientDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RecipientDeliveryNotification")]],
      ["recipientExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RecipientExceptionNotification")]],
      ["shipperShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ShipperShipNotification")]],
      ["shipperDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ShipperDeliveryNotification")]],
      ["shipperExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ShipperExceptionNotification")]],
      ["restrictedWordsCompliance", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RestrictedWordsCompliance")]],
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "TrackingNumber")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ArrayOfCommodityList,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ArrayOfCommodityList"),
    :schema_element => [
      ["commodityList", ["CommodityList[]", XSD::QName.new(NsWSG4SICOM, "CommodityList")], [0, nil]]
    ]
  )

  EncodedRegistry.register(
    :class => CommodityList,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "CommodityList"),
    :schema_element => [
      ["commodityDescription", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CommodityDescription")], [0, 1]],
      ["harmonizedCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "HarmonizedCode")], [0, 1]],
      ["commodityQuantity", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CommodityQuantity")]],
      ["measurement", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Measurement")], [0, 1]],
      ["customValue", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CustomValue")]],
      ["commodityWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CommodityWeight")]],
      ["codeCountryOfManufacture", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CodeCountryOfManufacture")], [0, 1]],
      ["nameOnLabel", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "NameOnLabel")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => Address,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "G4sTracking::Address"),
    :schema_element => [
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Company")], [0, 1]],
      ["address1", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Address1")], [0, 1]],
      ["address2", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Address2")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Phone")], [0, 1]],
      ["email", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Email")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => SchedulePickup,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "SchedulePickup"),
    :schema_element => [
      ["contactName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ContactName")], [0, 1]],
      ["companyName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CompanyName")], [0, 1]],
      ["packageLatestAvailableTime", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PackageLatestAvailableTime")], [0, 1]],
      ["readyTime", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ReadyTime")], [0, 1]],
      ["suiteNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SuiteNumber")], [0, 1]],
      ["floorID", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "FloorID")], [0, 1]],
      ["differentPickupLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "DifferentPickupLocation")]],
      ["packageLocation", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PackageLocation")], [0, 1]],
      ["address1", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Address1")], [0, 1]],
      ["address2", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Address2")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Phone")], [0, 1]],
      ["phoneExtn", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PhoneExtn")], [0, 1]],
      ["pickupDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsWSG4SICOM, "PickupDate")]]
    ]
  )

  EncodedRegistry.register(
    :class => COD,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "COD"),
    :schema_element => [
      ["collectType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CollectType")], [0, 1]],
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Company")], [0, 1]],
      ["country", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Country")], [0, 1]],
      ["G4sTracking::Address", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "G4sTracking::Address")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Phone")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => HoldAtLocation,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "HoldAtLocation"),
    :schema_element => [
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Company")], [0, 1]],
      ["G4sTracking::Address", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "G4sTracking::Address")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Phone")], [0, 1]],
      ["phoneExtn", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PhoneExtn")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => BrokerInfo,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "BrokerInfo"),
    :schema_element => [
      ["brokerName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerName")], [0, 1]],
      ["brokerTIN", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerTIN")], [0, 1]],
      ["brokerCompany", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerCompany")], [0, 1]],
      ["brokerAddress", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerAddress")], [0, 1]],
      ["brokerAddress1", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerAddress1")], [0, 1]],
      ["brokerAddress2", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerAddress2")], [0, 1]],
      ["brokerCity", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerCity")], [0, 1]],
      ["brokerState", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerState")], [0, 1]],
      ["brokerCountryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerCountryCode")], [0, 1]],
      ["brokerZip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerZip")], [0, 1]],
      ["brokerPhone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerPhone")], [0, 1]],
      ["brokerEmail", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerEmail")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentResponse,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ShipmentResponse"),
    :schema_element => [
      ["shipmentTrackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ShipmentTrackingNumber")], [0, 1]],
      ["shipmentLabel", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ShipmentLabel")], [0, 1]],
      ["status", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "Status")]],
      ["shipmentResponseErrorCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ShipmentResponseErrorCode")], [0, 1]],
      ["shipmentResponseError", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ShipmentResponseError")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentVoidResponse,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ShipmentVoidResponse"),
    :schema_element => [
      ["status", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "Status")]],
      ["errorDescription", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ErrorDescription")], [0, 1]],
      ["errorCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ErrorCode")], [0, 1]],
      ["additionalInfo", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "AdditionalInfo")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentVoidRequest,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ShipmentVoidRequest"),
    :schema_element => [
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "TrackingNumber")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsWSG4SICOM, "ShipmentDate")]]
    ]
  )

  LiteralRegistry.register(
    :class => PriceEstimateResponse,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "PriceEstimateResponse"),
    :schema_element => [
      ["baseCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "BaseCharges")]],
      ["fuelSurCharge", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "FuelSurCharge")]],
      ["additionalWeightCharge", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "AdditionalWeightCharge")]],
      ["schedulePickupCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "SchedulePickupCharges")]],
      ["saturdayPickupCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "SaturdayPickupCharges")]],
      ["adultSignatureCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "AdultSignatureCharges")]],
      ["directSignatureCharges", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "DirectSignatureCharges")]],
      ["errorCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ErrorCode")], [0, 1]],
      ["errorDescription", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ErrorDescription")], [0, 1]],
      ["innerException", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "InnerException")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => G4SIAuthentication,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "G4SIAuthentication"),
    :schema_element => [
      ["username", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Username")], [0, 1]],
      ["password", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Password")], [0, 1]],
      ["accessKey", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "AccessKey")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentRequest,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ShipmentRequest"),
    :schema_element => [
      ["commodityCollection", ["ArrayOfCommodityList", XSD::QName.new(NsWSG4SICOM, "CommodityCollection")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsWSG4SICOM, "ShipmentDate")]],
      ["billFreightTo", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BillFreightTo")], [0, 1]],
      ["serviceLevelName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ServiceLevelName")], [0, 1]],
      ["packageTypeName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PackageTypeName")], [0, 1]],
      ["declaredWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "DeclaredWeight")]],
      ["declareValue", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "DeclareValue")]],
      ["weightType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "WeightType")], [0, 1]],
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Description")], [0, 1]],
      ["dimensions", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Dimensions")], [0, 1]],
      ["dimensionUnitType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "DimensionUnitType")], [0, 1]],
      ["thermalPrinter", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ThermalPrinter")]],
      ["sEDNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SEDNumber")], [0, 1]],
      ["dutiesPayorType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "DutiesPayorType")], [0, 1]],
      ["recipientAddress", ["G4sTracking::Address", XSD::QName.new(NsWSG4SICOM, "RecipientAddress")], [0, 1]],
      ["saveNewRecipientAddress", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SaveNewRecipientAddress")]],
      ["shipperAddress", ["G4sTracking::Address", XSD::QName.new(NsWSG4SICOM, "ShipperAddress")], [0, 1]],
      ["cODAmount", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CODAmount")]],
      ["holdAtLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "HoldAtLocation")]],
      ["schedulePickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SchedulePickup")]],
      ["schedulePickupLocation", ["SchedulePickup", XSD::QName.new(NsWSG4SICOM, "SchedulePickupLocation")], [0, 1]],
      ["cODInfo", ["COD", XSD::QName.new(NsWSG4SICOM, "CODInfo")], [0, 1]],
      ["holdAtLocationInfo", ["HoldAtLocation", XSD::QName.new(NsWSG4SICOM, "HoldAtLocationInfo")], [0, 1]],
      ["purchaseOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PurchaseOrderNumber")], [0, 1]],
      ["salesOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SalesOrderNumber")], [0, 1]],
      ["brokerInfo", ["BrokerInfo", XSD::QName.new(NsWSG4SICOM, "BrokerInfo")], [0, 1]],
      ["recipientShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RecipientShipNotification")]],
      ["receiveAlerts", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ReceiveAlerts")]],
      ["saturdayDelivery", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SaturdayDelivery")]],
      ["saturdayPickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SaturdayPickup")]],
      ["residential", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "Residential")]],
      ["signatureOption", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SignatureOption")], [0, 1]],
      ["recipientAlertEmail", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "RecipientAlertEmail")], [0, 1]],
      ["recipientDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RecipientDeliveryNotification")]],
      ["recipientExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RecipientExceptionNotification")]],
      ["shipperShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ShipperShipNotification")]],
      ["shipperDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ShipperDeliveryNotification")]],
      ["shipperExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ShipperExceptionNotification")]],
      ["restrictedWordsCompliance", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RestrictedWordsCompliance")]],
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "TrackingNumber")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ArrayOfCommodityList,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ArrayOfCommodityList"),
    :schema_element => [
      ["commodityList", ["CommodityList[]", XSD::QName.new(NsWSG4SICOM, "CommodityList")], [0, nil]]
    ]
  )

  LiteralRegistry.register(
    :class => CommodityList,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "CommodityList"),
    :schema_element => [
      ["commodityDescription", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CommodityDescription")], [0, 1]],
      ["harmonizedCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "HarmonizedCode")], [0, 1]],
      ["commodityQuantity", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CommodityQuantity")]],
      ["measurement", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Measurement")], [0, 1]],
      ["customValue", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CustomValue")]],
      ["commodityWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CommodityWeight")]],
      ["codeCountryOfManufacture", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CodeCountryOfManufacture")], [0, 1]],
      ["nameOnLabel", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "NameOnLabel")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => Address,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "G4sTracking::Address"),
    :schema_element => [
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Company")], [0, 1]],
      ["address1", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Address1")], [0, 1]],
      ["address2", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Address2")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Phone")], [0, 1]],
      ["email", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Email")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => SchedulePickup,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "SchedulePickup"),
    :schema_element => [
      ["contactName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ContactName")], [0, 1]],
      ["companyName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CompanyName")], [0, 1]],
      ["packageLatestAvailableTime", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PackageLatestAvailableTime")], [0, 1]],
      ["readyTime", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ReadyTime")], [0, 1]],
      ["suiteNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SuiteNumber")], [0, 1]],
      ["floorID", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "FloorID")], [0, 1]],
      ["differentPickupLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "DifferentPickupLocation")]],
      ["packageLocation", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PackageLocation")], [0, 1]],
      ["address1", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Address1")], [0, 1]],
      ["address2", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Address2")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Phone")], [0, 1]],
      ["phoneExtn", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PhoneExtn")], [0, 1]],
      ["pickupDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsWSG4SICOM, "PickupDate")]]
    ]
  )

  LiteralRegistry.register(
    :class => COD,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "COD"),
    :schema_element => [
      ["collectType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CollectType")], [0, 1]],
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Company")], [0, 1]],
      ["country", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Country")], [0, 1]],
      ["G4sTracking::Address", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "G4sTracking::Address")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Phone")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => HoldAtLocation,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "HoldAtLocation"),
    :schema_element => [
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Company")], [0, 1]],
      ["G4sTracking::Address", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "G4sTracking::Address")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Phone")], [0, 1]],
      ["phoneExtn", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PhoneExtn")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => BrokerInfo,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "BrokerInfo"),
    :schema_element => [
      ["brokerName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerName")], [0, 1]],
      ["brokerTIN", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerTIN")], [0, 1]],
      ["brokerCompany", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerCompany")], [0, 1]],
      ["brokerAddress", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerAddress")], [0, 1]],
      ["brokerAddress1", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerAddress1")], [0, 1]],
      ["brokerAddress2", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerAddress2")], [0, 1]],
      ["brokerCity", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerCity")], [0, 1]],
      ["brokerState", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerState")], [0, 1]],
      ["brokerCountryCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerCountryCode")], [0, 1]],
      ["brokerZip", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerZip")], [0, 1]],
      ["brokerPhone", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerPhone")], [0, 1]],
      ["brokerEmail", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BrokerEmail")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentResponse,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ShipmentResponse"),
    :schema_element => [
      ["shipmentTrackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ShipmentTrackingNumber")], [0, 1]],
      ["shipmentLabel", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ShipmentLabel")], [0, 1]],
      ["status", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "Status")]],
      ["shipmentResponseErrorCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ShipmentResponseErrorCode")], [0, 1]],
      ["shipmentResponseError", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ShipmentResponseError")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentVoidResponse,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ShipmentVoidResponse"),
    :schema_element => [
      ["status", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "Status")]],
      ["errorDescription", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ErrorDescription")], [0, 1]],
      ["errorCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ErrorCode")], [0, 1]],
      ["additionalInfo", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "AdditionalInfo")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentVoidRequest,
    :schema_type => XSD::QName.new(NsWSG4SICOM, "ShipmentVoidRequest"),
    :schema_element => [
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "TrackingNumber")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsWSG4SICOM, "ShipmentDate")]]
    ]
  )

  LiteralRegistry.register(
    :class => CalculateEstimatedPrice,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "CalculateEstimatedPrice"),
    :schema_element => []
  )

  LiteralRegistry.register(
    :class => CalculateEstimatedPriceResponse,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "CalculateEstimatedPriceResponse"),
    :schema_element => [
      ["calculateEstimatedPriceResult", ["PriceEstimateResponse", XSD::QName.new(NsWSG4SICOM, "CalculateEstimatedPriceResult")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => G4SIAuthentication,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "G4SIAuthentication"),
    :schema_element => [
      ["username", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Username")], [0, 1]],
      ["password", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Password")], [0, 1]],
      ["accessKey", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "AccessKey")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentRequest,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "ShipmentRequest"),
    :schema_element => [
      ["commodityCollection", ["ArrayOfCommodityList", XSD::QName.new(NsWSG4SICOM, "CommodityCollection")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsWSG4SICOM, "ShipmentDate")]],
      ["billFreightTo", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "BillFreightTo")], [0, 1]],
      ["serviceLevelName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "ServiceLevelName")], [0, 1]],
      ["packageTypeName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PackageTypeName")], [0, 1]],
      ["declaredWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "DeclaredWeight")]],
      ["declareValue", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "DeclareValue")]],
      ["weightType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "WeightType")], [0, 1]],
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Description")], [0, 1]],
      ["dimensions", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Dimensions")], [0, 1]],
      ["dimensionUnitType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "DimensionUnitType")], [0, 1]],
      ["thermalPrinter", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ThermalPrinter")]],
      ["sEDNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SEDNumber")], [0, 1]],
      ["dutiesPayorType", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "DutiesPayorType")], [0, 1]],
      ["recipientAddress", ["G4sTracking::Address", XSD::QName.new(NsWSG4SICOM, "RecipientAddress")], [0, 1]],
      ["saveNewRecipientAddress", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SaveNewRecipientAddress")]],
      ["shipperAddress", ["G4sTracking::Address", XSD::QName.new(NsWSG4SICOM, "ShipperAddress")], [0, 1]],
      ["cODAmount", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CODAmount")]],
      ["holdAtLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "HoldAtLocation")]],
      ["schedulePickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SchedulePickup")]],
      ["schedulePickupLocation", ["SchedulePickup", XSD::QName.new(NsWSG4SICOM, "SchedulePickupLocation")], [0, 1]],
      ["cODInfo", ["COD", XSD::QName.new(NsWSG4SICOM, "CODInfo")], [0, 1]],
      ["holdAtLocationInfo", ["HoldAtLocation", XSD::QName.new(NsWSG4SICOM, "HoldAtLocationInfo")], [0, 1]],
      ["purchaseOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "PurchaseOrderNumber")], [0, 1]],
      ["salesOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SalesOrderNumber")], [0, 1]],
      ["brokerInfo", ["BrokerInfo", XSD::QName.new(NsWSG4SICOM, "BrokerInfo")], [0, 1]],
      ["recipientShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RecipientShipNotification")]],
      ["receiveAlerts", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ReceiveAlerts")]],
      ["saturdayDelivery", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SaturdayDelivery")]],
      ["saturdayPickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "SaturdayPickup")]],
      ["residential", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "Residential")]],
      ["signatureOption", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "SignatureOption")], [0, 1]],
      ["recipientAlertEmail", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "RecipientAlertEmail")], [0, 1]],
      ["recipientDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RecipientDeliveryNotification")]],
      ["recipientExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RecipientExceptionNotification")]],
      ["shipperShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ShipperShipNotification")]],
      ["shipperDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ShipperDeliveryNotification")]],
      ["shipperExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "ShipperExceptionNotification")]],
      ["restrictedWordsCompliance", ["SOAP::SOAPBoolean", XSD::QName.new(NsWSG4SICOM, "RestrictedWordsCompliance")]],
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "TrackingNumber")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => CreateShipment,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "CreateShipment"),
    :schema_element => []
  )

  LiteralRegistry.register(
    :class => CreateShipmentResponse,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "CreateShipmentResponse"),
    :schema_element => [
      ["createShipmentResult", ["ShipmentResponse", XSD::QName.new(NsWSG4SICOM, "CreateShipmentResult")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => CommodityList,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "CommodityList"),
    :schema_element => [
      ["commodityDescription", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CommodityDescription")], [0, 1]],
      ["harmonizedCode", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "HarmonizedCode")], [0, 1]],
      ["commodityQuantity", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CommodityQuantity")]],
      ["measurement", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "Measurement")], [0, 1]],
      ["customValue", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CustomValue")]],
      ["commodityWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsWSG4SICOM, "CommodityWeight")]],
      ["codeCountryOfManufacture", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CodeCountryOfManufacture")], [0, 1]],
      ["nameOnLabel", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "NameOnLabel")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => VoidShipment,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "VoidShipment"),
    :schema_element => []
  )

  LiteralRegistry.register(
    :class => VoidShipmentResponse,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "VoidShipmentResponse"),
    :schema_element => [
      ["voidShipmentResult", ["ShipmentVoidResponse", XSD::QName.new(NsWSG4SICOM, "VoidShipmentResult")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentVoidRequest,
    :schema_name => XSD::QName.new(NsWSG4SICOM, "ShipmentVoidRequest"),
    :schema_element => [
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "TrackingNumber")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsWSG4SICOM, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsWSG4SICOM, "ShipmentDate")]]
    ]
  )
end