Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2013.03.04 at 03:49:29 PM IST 
//


package in.shop2020.feeds.products;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.datatype.XMLGregorianCalendar;


/**
 * <p>Java class for anonymous complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType>
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="ProductType">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;choice>
 *                   &lt;element ref="{}FilmCamera"/>
 *                   &lt;element ref="{}Camcorder"/>
 *                   &lt;element ref="{}DigitalCamera"/>
 *                   &lt;element ref="{}DigitalFrame"/>
 *                   &lt;element ref="{}Binocular"/>
 *                   &lt;element ref="{}SurveillanceSystem"/>
 *                   &lt;element ref="{}Telescope"/>
 *                   &lt;element ref="{}Microscope"/>
 *                   &lt;element ref="{}Darkroom"/>
 *                   &lt;element ref="{}Lens"/>
 *                   &lt;element ref="{}LensAccessory"/>
 *                   &lt;element ref="{}Filter"/>
 *                   &lt;element ref="{}Film"/>
 *                   &lt;element ref="{}BagCase"/>
 *                   &lt;element ref="{}BlankMedia"/>
 *                   &lt;element ref="{}PhotoPaper"/>
 *                   &lt;element ref="{}Cleaner"/>
 *                   &lt;element ref="{}Flash"/>
 *                   &lt;element ref="{}TripodStand"/>
 *                   &lt;element name="Lighting" type="{}LightingType"/>
 *                   &lt;element ref="{}Projection"/>
 *                   &lt;element ref="{}PhotoStudio"/>
 *                   &lt;element ref="{}LightMeter"/>
 *                   &lt;element ref="{}PowerSupply"/>
 *                   &lt;element ref="{}OtherAccessory"/>
 *                 &lt;/choice>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *         &lt;element ref="{}Battery" minOccurs="0"/>
 *         &lt;element name="BatteryCellType" type="{}BatteryCellTypeValues" minOccurs="0"/>
 *         &lt;element name="CountryOfOrigin" type="{}CountryOfOriginType" minOccurs="0"/>
 *         &lt;element name="Manufacturer" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="ModelName" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="ModelNumber" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="MfrPartNumber" type="{}FortyStringNotNull" minOccurs="0"/>
 *         &lt;element name="CustomerPackageType" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="CanShipInOriginalContainer" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
 *         &lt;element name="IdentityPackageType" minOccurs="0">
 *           &lt;simpleType>
 *             &lt;restriction base="{}StringNotNull">
 *               &lt;enumeration value="bulk"/>
 *               &lt;enumeration value="frustration_free"/>
 *               &lt;enumeration value="traditional"/>
 *             &lt;/restriction>
 *           &lt;/simpleType>
 *         &lt;/element>
 *         &lt;element name="Color" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="Rebate" maxOccurs="2" minOccurs="0">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element name="RebateStartDate" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
 *                   &lt;element name="RebateEndDate" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
 *                   &lt;element name="RebateMessage" type="{}TwoFiftyStringNotNull"/>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *         &lt;element name="ColorMap" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="ItemsIncluded" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="Keywords" type="{}StringNotNull" maxOccurs="5" minOccurs="0"/>
 *         &lt;element name="PlatinumKeywords" type="{}StringNotNull" maxOccurs="20" minOccurs="0"/>
 *         &lt;element name="AudioInput" type="{}StringNotNull" maxOccurs="5" minOccurs="0"/>
 *         &lt;element name="AutoFocusTechnology" type="{}StringNotNull" maxOccurs="2" minOccurs="0"/>
 *         &lt;element name="BatteryTypeLithiumIon" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" minOccurs="0"/>
 *         &lt;element name="BatteryTypeLithiumMetal" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" minOccurs="0"/>
 *         &lt;element name="CompatibleDevices" type="{}StringNotNull" maxOccurs="10" minOccurs="0"/>
 *         &lt;element name="CompatibleMountings" type="{}StringNotNull" maxOccurs="5" minOccurs="0"/>
 *         &lt;element name="DeviceType" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="DisplayTechnology" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="DisplayType" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="FilmSpeedRange" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="Finderscope" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="FormFactor" type="{}StringNotNull" maxOccurs="5" minOccurs="0"/>
 *         &lt;element name="GuideNumber" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="HardwarePlatform" type="{}MediumStringNotNull" minOccurs="0"/>
 *         &lt;element name="HasImageStabilizer" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
 *         &lt;element name="ImageArea" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="ItemDisplayDiameter" type="{}LengthDimension" minOccurs="0"/>
 *         &lt;element name="ItemDisplayDepth" type="{}LengthDimension" minOccurs="0"/>
 *         &lt;element name="ItemDisplayHeight" type="{}LengthDimension" minOccurs="0"/>
 *         &lt;element name="ItemDisplayLength" type="{}LengthDimension" minOccurs="0"/>
 *         &lt;element name="ItemDisplayWeight" type="{}WeightDimension" minOccurs="0"/>
 *         &lt;element name="ItemDisplayWidth" type="{}LengthDimension" minOccurs="0"/>
 *         &lt;element name="ItemThickness" type="{}LengthDimension" minOccurs="0"/>
 *         &lt;element name="LensCoverage" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="LensSystemSpecialFunctions" type="{}StringNotNull" maxOccurs="5" minOccurs="0"/>
 *         &lt;element name="LightSensitivity" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="LithiumBatteryEnergyContent" type="{http://www.w3.org/2001/XMLSchema}decimal" minOccurs="0"/>
 *         &lt;element name="LithiumBatteryPackaging" minOccurs="0">
 *           &lt;simpleType>
 *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *               &lt;enumeration value="batteries_contained_in_equipment"/>
 *               &lt;enumeration value="batteries_only"/>
 *               &lt;enumeration value="batteries_packed_with_equipment"/>
 *             &lt;/restriction>
 *           &lt;/simpleType>
 *         &lt;/element>
 *         &lt;element name="LithiumBatteryVoltage" type="{http://www.w3.org/2001/XMLSchema}decimal" minOccurs="0"/>
 *         &lt;element name="LithiumBatteryWeight" type="{http://www.w3.org/2001/XMLSchema}decimal" minOccurs="0"/>
 *         &lt;element name="ManufacturerWarrantyDescription" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="ManufacturerWarrantyType" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="MaximumApertureRange" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="MaximumHeight" type="{}LengthDimension" minOccurs="0"/>
 *         &lt;element name="MaximumLifetimeCharges" type="{}PositiveInteger" minOccurs="0"/>
 *         &lt;element name="MaximumManufacturerWeightRecommended" type="{}WeightIntegerDimension" minOccurs="0"/>
 *         &lt;element name="MediaType" type="{}StringNotNull" maxOccurs="10" minOccurs="0"/>
 *         &lt;element name="MemoryStorageCapacity" type="{}MemorySizeDimension" minOccurs="0"/>
 *         &lt;element name="MemoryTechnology" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="MfrWarrantyDescriptionLabor" type="{}SuperLongStringNotNull" minOccurs="0"/>
 *         &lt;element name="MfrWarrantyDescriptionParts" type="{}SuperLongStringNotNull" minOccurs="0"/>
 *         &lt;element name="MicrophoneOperationMode" type="{}StringNotNull" maxOccurs="5" minOccurs="0"/>
 *         &lt;element name="MinFocalRange" type="{}LengthDimension" minOccurs="0"/>
 *         &lt;element name="MinimumHeight" type="{}LengthDimension" minOccurs="0"/>
 *         &lt;element name="MountingType" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="NumberOfLithiumIonCells" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" minOccurs="0"/>
 *         &lt;element name="NumberOfLithiumMetalCells" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" minOccurs="0"/>
 *         &lt;element name="OpticalSensorResolution" type="{}PixelDimension" minOccurs="0"/>
 *         &lt;element name="OpticalSensorSize" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="OpticalSensorTechnology" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="Parentage" minOccurs="0">
 *           &lt;simpleType>
 *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *               &lt;enumeration value="parent"/>
 *               &lt;enumeration value="child"/>
 *             &lt;/restriction>
 *           &lt;/simpleType>
 *         &lt;/element>
 *         &lt;element name="VariationTheme" minOccurs="0">
 *           &lt;simpleType>
 *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *               &lt;enumeration value="CustomerPackageType"/>
 *               &lt;enumeration value="ColorName-CustomerPackageType"/>
 *               &lt;enumeration value="SizeName-CustomerPackageType"/>
 *               &lt;enumeration value="SizeName-ColorName-CustomerPackageType"/>
 *               &lt;enumeration value="StyleName-CustomerPackageType"/>
 *               &lt;enumeration value="SizeName-StyleName-CustomerPackageType"/>
 *             &lt;/restriction>
 *           &lt;/simpleType>
 *         &lt;/element>
 *         &lt;element name="RangefinderType" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="RechargeableBatteryIncluded" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
 *         &lt;element name="RemoteControlDescription" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="RemovableStorageInterface" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="RollQuantity" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="SellerWarrantyDescription" type="{}SuperLongStringNotNull" minOccurs="0"/>
 *         &lt;element name="SizeName" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="ShootingModes" type="{}StringNotNull" maxOccurs="5" minOccurs="0"/>
 *         &lt;element name="SupportedImageType" type="{}ImageFormatTypeValues" maxOccurs="5" minOccurs="0"/>
 *         &lt;element name="StyleName" type="{}StringNotNull" minOccurs="0"/>
 *         &lt;element name="VideoInput" type="{}StringNotNull" maxOccurs="5" minOccurs="0"/>
 *         &lt;element name="VideoInputFormat" type="{}StringNotNull" maxOccurs="10" minOccurs="0"/>
 *         &lt;element name="VideoInputSpecialEffects" type="{}StringNotNull" maxOccurs="5" minOccurs="0"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "productType",
    "battery",
    "batteryCellType",
    "countryOfOrigin",
    "manufacturer",
    "modelName",
    "modelNumber",
    "mfrPartNumber",
    "customerPackageType",
    "canShipInOriginalContainer",
    "identityPackageType",
    "color",
    "rebate",
    "colorMap",
    "itemsIncluded",
    "keywords",
    "platinumKeywords",
    "audioInput",
    "autoFocusTechnology",
    "batteryTypeLithiumIon",
    "batteryTypeLithiumMetal",
    "compatibleDevices",
    "compatibleMountings",
    "deviceType",
    "displayTechnology",
    "displayType",
    "filmSpeedRange",
    "finderscope",
    "formFactor",
    "guideNumber",
    "hardwarePlatform",
    "hasImageStabilizer",
    "imageArea",
    "itemDisplayDiameter",
    "itemDisplayDepth",
    "itemDisplayHeight",
    "itemDisplayLength",
    "itemDisplayWeight",
    "itemDisplayWidth",
    "itemThickness",
    "lensCoverage",
    "lensSystemSpecialFunctions",
    "lightSensitivity",
    "lithiumBatteryEnergyContent",
    "lithiumBatteryPackaging",
    "lithiumBatteryVoltage",
    "lithiumBatteryWeight",
    "manufacturerWarrantyDescription",
    "manufacturerWarrantyType",
    "maximumApertureRange",
    "maximumHeight",
    "maximumLifetimeCharges",
    "maximumManufacturerWeightRecommended",
    "mediaType",
    "memoryStorageCapacity",
    "memoryTechnology",
    "mfrWarrantyDescriptionLabor",
    "mfrWarrantyDescriptionParts",
    "microphoneOperationMode",
    "minFocalRange",
    "minimumHeight",
    "mountingType",
    "numberOfLithiumIonCells",
    "numberOfLithiumMetalCells",
    "opticalSensorResolution",
    "opticalSensorSize",
    "opticalSensorTechnology",
    "parentage",
    "variationTheme",
    "rangefinderType",
    "rechargeableBatteryIncluded",
    "remoteControlDescription",
    "removableStorageInterface",
    "rollQuantity",
    "sellerWarrantyDescription",
    "sizeName",
    "shootingModes",
    "supportedImageType",
    "styleName",
    "videoInput",
    "videoInputFormat",
    "videoInputSpecialEffects"
})
@XmlRootElement(name = "CameraPhoto")
public class CameraPhoto {

    @XmlElement(name = "ProductType", required = true)
    protected CameraPhoto.ProductType productType;
    @XmlElement(name = "Battery")
    protected Battery battery;
    @XmlElement(name = "BatteryCellType")
    protected BatteryCellTypeValues batteryCellType;
    @XmlElement(name = "CountryOfOrigin")
    protected String countryOfOrigin;
    @XmlElement(name = "Manufacturer")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String manufacturer;
    @XmlElement(name = "ModelName")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String modelName;
    @XmlElement(name = "ModelNumber")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String modelNumber;
    @XmlElement(name = "MfrPartNumber")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String mfrPartNumber;
    @XmlElement(name = "CustomerPackageType")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String customerPackageType;
    @XmlElement(name = "CanShipInOriginalContainer")
    protected Boolean canShipInOriginalContainer;
    @XmlElement(name = "IdentityPackageType")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String identityPackageType;
    @XmlElement(name = "Color")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String color;
    @XmlElement(name = "Rebate")
    protected List<CameraPhoto.Rebate> rebate;
    @XmlElement(name = "ColorMap")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String colorMap;
    @XmlElement(name = "ItemsIncluded")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String itemsIncluded;
    @XmlElement(name = "Keywords")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> keywords;
    @XmlElement(name = "PlatinumKeywords")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> platinumKeywords;
    @XmlElement(name = "AudioInput")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> audioInput;
    @XmlElement(name = "AutoFocusTechnology")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> autoFocusTechnology;
    @XmlElement(name = "BatteryTypeLithiumIon")
    @XmlSchemaType(name = "positiveInteger")
    protected BigInteger batteryTypeLithiumIon;
    @XmlElement(name = "BatteryTypeLithiumMetal")
    @XmlSchemaType(name = "positiveInteger")
    protected BigInteger batteryTypeLithiumMetal;
    @XmlElement(name = "CompatibleDevices")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> compatibleDevices;
    @XmlElement(name = "CompatibleMountings")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> compatibleMountings;
    @XmlElement(name = "DeviceType")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String deviceType;
    @XmlElement(name = "DisplayTechnology")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String displayTechnology;
    @XmlElement(name = "DisplayType")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String displayType;
    @XmlElement(name = "FilmSpeedRange")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String filmSpeedRange;
    @XmlElement(name = "Finderscope")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String finderscope;
    @XmlElement(name = "FormFactor")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> formFactor;
    @XmlElement(name = "GuideNumber")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String guideNumber;
    @XmlElement(name = "HardwarePlatform")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String hardwarePlatform;
    @XmlElement(name = "HasImageStabilizer")
    protected Boolean hasImageStabilizer;
    @XmlElement(name = "ImageArea")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String imageArea;
    @XmlElement(name = "ItemDisplayDiameter")
    protected LengthDimension itemDisplayDiameter;
    @XmlElement(name = "ItemDisplayDepth")
    protected LengthDimension itemDisplayDepth;
    @XmlElement(name = "ItemDisplayHeight")
    protected LengthDimension itemDisplayHeight;
    @XmlElement(name = "ItemDisplayLength")
    protected LengthDimension itemDisplayLength;
    @XmlElement(name = "ItemDisplayWeight")
    protected WeightDimension itemDisplayWeight;
    @XmlElement(name = "ItemDisplayWidth")
    protected LengthDimension itemDisplayWidth;
    @XmlElement(name = "ItemThickness")
    protected LengthDimension itemThickness;
    @XmlElement(name = "LensCoverage")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String lensCoverage;
    @XmlElement(name = "LensSystemSpecialFunctions")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> lensSystemSpecialFunctions;
    @XmlElement(name = "LightSensitivity")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String lightSensitivity;
    @XmlElement(name = "LithiumBatteryEnergyContent")
    protected BigDecimal lithiumBatteryEnergyContent;
    @XmlElement(name = "LithiumBatteryPackaging")
    protected String lithiumBatteryPackaging;
    @XmlElement(name = "LithiumBatteryVoltage")
    protected BigDecimal lithiumBatteryVoltage;
    @XmlElement(name = "LithiumBatteryWeight")
    protected BigDecimal lithiumBatteryWeight;
    @XmlElement(name = "ManufacturerWarrantyDescription")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String manufacturerWarrantyDescription;
    @XmlElement(name = "ManufacturerWarrantyType")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String manufacturerWarrantyType;
    @XmlElement(name = "MaximumApertureRange")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String maximumApertureRange;
    @XmlElement(name = "MaximumHeight")
    protected LengthDimension maximumHeight;
    @XmlElement(name = "MaximumLifetimeCharges")
    protected BigInteger maximumLifetimeCharges;
    @XmlElement(name = "MaximumManufacturerWeightRecommended")
    protected WeightIntegerDimension maximumManufacturerWeightRecommended;
    @XmlElement(name = "MediaType")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> mediaType;
    @XmlElement(name = "MemoryStorageCapacity")
    protected MemorySizeDimension memoryStorageCapacity;
    @XmlElement(name = "MemoryTechnology")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String memoryTechnology;
    @XmlElement(name = "MfrWarrantyDescriptionLabor")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String mfrWarrantyDescriptionLabor;
    @XmlElement(name = "MfrWarrantyDescriptionParts")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String mfrWarrantyDescriptionParts;
    @XmlElement(name = "MicrophoneOperationMode")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> microphoneOperationMode;
    @XmlElement(name = "MinFocalRange")
    protected LengthDimension minFocalRange;
    @XmlElement(name = "MinimumHeight")
    protected LengthDimension minimumHeight;
    @XmlElement(name = "MountingType")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String mountingType;
    @XmlElement(name = "NumberOfLithiumIonCells")
    @XmlSchemaType(name = "positiveInteger")
    protected BigInteger numberOfLithiumIonCells;
    @XmlElement(name = "NumberOfLithiumMetalCells")
    @XmlSchemaType(name = "positiveInteger")
    protected BigInteger numberOfLithiumMetalCells;
    @XmlElement(name = "OpticalSensorResolution")
    protected PixelDimension opticalSensorResolution;
    @XmlElement(name = "OpticalSensorSize")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String opticalSensorSize;
    @XmlElement(name = "OpticalSensorTechnology")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String opticalSensorTechnology;
    @XmlElement(name = "Parentage")
    protected String parentage;
    @XmlElement(name = "VariationTheme")
    protected String variationTheme;
    @XmlElement(name = "RangefinderType")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String rangefinderType;
    @XmlElement(name = "RechargeableBatteryIncluded")
    protected Boolean rechargeableBatteryIncluded;
    @XmlElement(name = "RemoteControlDescription")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String remoteControlDescription;
    @XmlElement(name = "RemovableStorageInterface")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String removableStorageInterface;
    @XmlElement(name = "RollQuantity")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String rollQuantity;
    @XmlElement(name = "SellerWarrantyDescription")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String sellerWarrantyDescription;
    @XmlElement(name = "SizeName")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String sizeName;
    @XmlElement(name = "ShootingModes")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> shootingModes;
    @XmlElement(name = "SupportedImageType")
    protected List<ImageFormatTypeValues> supportedImageType;
    @XmlElement(name = "StyleName")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected String styleName;
    @XmlElement(name = "VideoInput")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> videoInput;
    @XmlElement(name = "VideoInputFormat")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> videoInputFormat;
    @XmlElement(name = "VideoInputSpecialEffects")
    @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
    protected List<String> videoInputSpecialEffects;

    /**
     * Gets the value of the productType property.
     * 
     * @return
     *     possible object is
     *     {@link CameraPhoto.ProductType }
     *     
     */
    public CameraPhoto.ProductType getProductType() {
        return productType;
    }

    /**
     * Sets the value of the productType property.
     * 
     * @param value
     *     allowed object is
     *     {@link CameraPhoto.ProductType }
     *     
     */
    public void setProductType(CameraPhoto.ProductType value) {
        this.productType = value;
    }

    /**
     * Gets the value of the battery property.
     * 
     * @return
     *     possible object is
     *     {@link Battery }
     *     
     */
    public Battery getBattery() {
        return battery;
    }

    /**
     * Sets the value of the battery property.
     * 
     * @param value
     *     allowed object is
     *     {@link Battery }
     *     
     */
    public void setBattery(Battery value) {
        this.battery = value;
    }

    /**
     * Gets the value of the batteryCellType property.
     * 
     * @return
     *     possible object is
     *     {@link BatteryCellTypeValues }
     *     
     */
    public BatteryCellTypeValues getBatteryCellType() {
        return batteryCellType;
    }

    /**
     * Sets the value of the batteryCellType property.
     * 
     * @param value
     *     allowed object is
     *     {@link BatteryCellTypeValues }
     *     
     */
    public void setBatteryCellType(BatteryCellTypeValues value) {
        this.batteryCellType = value;
    }

    /**
     * Gets the value of the countryOfOrigin property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getCountryOfOrigin() {
        return countryOfOrigin;
    }

    /**
     * Sets the value of the countryOfOrigin property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setCountryOfOrigin(String value) {
        this.countryOfOrigin = value;
    }

    /**
     * Gets the value of the manufacturer property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getManufacturer() {
        return manufacturer;
    }

    /**
     * Sets the value of the manufacturer property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setManufacturer(String value) {
        this.manufacturer = value;
    }

    /**
     * Gets the value of the modelName property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getModelName() {
        return modelName;
    }

    /**
     * Sets the value of the modelName property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setModelName(String value) {
        this.modelName = value;
    }

    /**
     * Gets the value of the modelNumber property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getModelNumber() {
        return modelNumber;
    }

    /**
     * Sets the value of the modelNumber property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setModelNumber(String value) {
        this.modelNumber = value;
    }

    /**
     * Gets the value of the mfrPartNumber property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getMfrPartNumber() {
        return mfrPartNumber;
    }

    /**
     * Sets the value of the mfrPartNumber property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setMfrPartNumber(String value) {
        this.mfrPartNumber = value;
    }

    /**
     * Gets the value of the customerPackageType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getCustomerPackageType() {
        return customerPackageType;
    }

    /**
     * Sets the value of the customerPackageType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setCustomerPackageType(String value) {
        this.customerPackageType = value;
    }

    /**
     * Gets the value of the canShipInOriginalContainer property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public Boolean isCanShipInOriginalContainer() {
        return canShipInOriginalContainer;
    }

    /**
     * Sets the value of the canShipInOriginalContainer property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setCanShipInOriginalContainer(Boolean value) {
        this.canShipInOriginalContainer = value;
    }

    /**
     * Gets the value of the identityPackageType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getIdentityPackageType() {
        return identityPackageType;
    }

    /**
     * Sets the value of the identityPackageType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setIdentityPackageType(String value) {
        this.identityPackageType = value;
    }

    /**
     * Gets the value of the color property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getColor() {
        return color;
    }

    /**
     * Sets the value of the color property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setColor(String value) {
        this.color = value;
    }

    /**
     * Gets the value of the rebate property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the rebate property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getRebate().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link CameraPhoto.Rebate }
     * 
     * 
     */
    public List<CameraPhoto.Rebate> getRebate() {
        if (rebate == null) {
            rebate = new ArrayList<CameraPhoto.Rebate>();
        }
        return this.rebate;
    }

    /**
     * Gets the value of the colorMap property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getColorMap() {
        return colorMap;
    }

    /**
     * Sets the value of the colorMap property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setColorMap(String value) {
        this.colorMap = value;
    }

    /**
     * Gets the value of the itemsIncluded property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getItemsIncluded() {
        return itemsIncluded;
    }

    /**
     * Sets the value of the itemsIncluded property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setItemsIncluded(String value) {
        this.itemsIncluded = value;
    }

    /**
     * Gets the value of the keywords property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the keywords property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getKeywords().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getKeywords() {
        if (keywords == null) {
            keywords = new ArrayList<String>();
        }
        return this.keywords;
    }

    /**
     * Gets the value of the platinumKeywords property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the platinumKeywords property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getPlatinumKeywords().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getPlatinumKeywords() {
        if (platinumKeywords == null) {
            platinumKeywords = new ArrayList<String>();
        }
        return this.platinumKeywords;
    }

    /**
     * Gets the value of the audioInput property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the audioInput property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getAudioInput().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getAudioInput() {
        if (audioInput == null) {
            audioInput = new ArrayList<String>();
        }
        return this.audioInput;
    }

    /**
     * Gets the value of the autoFocusTechnology property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the autoFocusTechnology property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getAutoFocusTechnology().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getAutoFocusTechnology() {
        if (autoFocusTechnology == null) {
            autoFocusTechnology = new ArrayList<String>();
        }
        return this.autoFocusTechnology;
    }

    /**
     * Gets the value of the batteryTypeLithiumIon property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getBatteryTypeLithiumIon() {
        return batteryTypeLithiumIon;
    }

    /**
     * Sets the value of the batteryTypeLithiumIon property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setBatteryTypeLithiumIon(BigInteger value) {
        this.batteryTypeLithiumIon = value;
    }

    /**
     * Gets the value of the batteryTypeLithiumMetal property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getBatteryTypeLithiumMetal() {
        return batteryTypeLithiumMetal;
    }

    /**
     * Sets the value of the batteryTypeLithiumMetal property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setBatteryTypeLithiumMetal(BigInteger value) {
        this.batteryTypeLithiumMetal = value;
    }

    /**
     * Gets the value of the compatibleDevices property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the compatibleDevices property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getCompatibleDevices().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getCompatibleDevices() {
        if (compatibleDevices == null) {
            compatibleDevices = new ArrayList<String>();
        }
        return this.compatibleDevices;
    }

    /**
     * Gets the value of the compatibleMountings property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the compatibleMountings property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getCompatibleMountings().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getCompatibleMountings() {
        if (compatibleMountings == null) {
            compatibleMountings = new ArrayList<String>();
        }
        return this.compatibleMountings;
    }

    /**
     * Gets the value of the deviceType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDeviceType() {
        return deviceType;
    }

    /**
     * Sets the value of the deviceType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setDeviceType(String value) {
        this.deviceType = value;
    }

    /**
     * Gets the value of the displayTechnology property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDisplayTechnology() {
        return displayTechnology;
    }

    /**
     * Sets the value of the displayTechnology property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setDisplayTechnology(String value) {
        this.displayTechnology = value;
    }

    /**
     * Gets the value of the displayType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDisplayType() {
        return displayType;
    }

    /**
     * Sets the value of the displayType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setDisplayType(String value) {
        this.displayType = value;
    }

    /**
     * Gets the value of the filmSpeedRange property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getFilmSpeedRange() {
        return filmSpeedRange;
    }

    /**
     * Sets the value of the filmSpeedRange property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setFilmSpeedRange(String value) {
        this.filmSpeedRange = value;
    }

    /**
     * Gets the value of the finderscope property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getFinderscope() {
        return finderscope;
    }

    /**
     * Sets the value of the finderscope property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setFinderscope(String value) {
        this.finderscope = value;
    }

    /**
     * Gets the value of the formFactor property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the formFactor property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getFormFactor().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getFormFactor() {
        if (formFactor == null) {
            formFactor = new ArrayList<String>();
        }
        return this.formFactor;
    }

    /**
     * Gets the value of the guideNumber property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getGuideNumber() {
        return guideNumber;
    }

    /**
     * Sets the value of the guideNumber property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setGuideNumber(String value) {
        this.guideNumber = value;
    }

    /**
     * Gets the value of the hardwarePlatform property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getHardwarePlatform() {
        return hardwarePlatform;
    }

    /**
     * Sets the value of the hardwarePlatform property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setHardwarePlatform(String value) {
        this.hardwarePlatform = value;
    }

    /**
     * Gets the value of the hasImageStabilizer property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public Boolean isHasImageStabilizer() {
        return hasImageStabilizer;
    }

    /**
     * Sets the value of the hasImageStabilizer property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setHasImageStabilizer(Boolean value) {
        this.hasImageStabilizer = value;
    }

    /**
     * Gets the value of the imageArea property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getImageArea() {
        return imageArea;
    }

    /**
     * Sets the value of the imageArea property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setImageArea(String value) {
        this.imageArea = value;
    }

    /**
     * Gets the value of the itemDisplayDiameter property.
     * 
     * @return
     *     possible object is
     *     {@link LengthDimension }
     *     
     */
    public LengthDimension getItemDisplayDiameter() {
        return itemDisplayDiameter;
    }

    /**
     * Sets the value of the itemDisplayDiameter property.
     * 
     * @param value
     *     allowed object is
     *     {@link LengthDimension }
     *     
     */
    public void setItemDisplayDiameter(LengthDimension value) {
        this.itemDisplayDiameter = value;
    }

    /**
     * Gets the value of the itemDisplayDepth property.
     * 
     * @return
     *     possible object is
     *     {@link LengthDimension }
     *     
     */
    public LengthDimension getItemDisplayDepth() {
        return itemDisplayDepth;
    }

    /**
     * Sets the value of the itemDisplayDepth property.
     * 
     * @param value
     *     allowed object is
     *     {@link LengthDimension }
     *     
     */
    public void setItemDisplayDepth(LengthDimension value) {
        this.itemDisplayDepth = value;
    }

    /**
     * Gets the value of the itemDisplayHeight property.
     * 
     * @return
     *     possible object is
     *     {@link LengthDimension }
     *     
     */
    public LengthDimension getItemDisplayHeight() {
        return itemDisplayHeight;
    }

    /**
     * Sets the value of the itemDisplayHeight property.
     * 
     * @param value
     *     allowed object is
     *     {@link LengthDimension }
     *     
     */
    public void setItemDisplayHeight(LengthDimension value) {
        this.itemDisplayHeight = value;
    }

    /**
     * Gets the value of the itemDisplayLength property.
     * 
     * @return
     *     possible object is
     *     {@link LengthDimension }
     *     
     */
    public LengthDimension getItemDisplayLength() {
        return itemDisplayLength;
    }

    /**
     * Sets the value of the itemDisplayLength property.
     * 
     * @param value
     *     allowed object is
     *     {@link LengthDimension }
     *     
     */
    public void setItemDisplayLength(LengthDimension value) {
        this.itemDisplayLength = value;
    }

    /**
     * Gets the value of the itemDisplayWeight property.
     * 
     * @return
     *     possible object is
     *     {@link WeightDimension }
     *     
     */
    public WeightDimension getItemDisplayWeight() {
        return itemDisplayWeight;
    }

    /**
     * Sets the value of the itemDisplayWeight property.
     * 
     * @param value
     *     allowed object is
     *     {@link WeightDimension }
     *     
     */
    public void setItemDisplayWeight(WeightDimension value) {
        this.itemDisplayWeight = value;
    }

    /**
     * Gets the value of the itemDisplayWidth property.
     * 
     * @return
     *     possible object is
     *     {@link LengthDimension }
     *     
     */
    public LengthDimension getItemDisplayWidth() {
        return itemDisplayWidth;
    }

    /**
     * Sets the value of the itemDisplayWidth property.
     * 
     * @param value
     *     allowed object is
     *     {@link LengthDimension }
     *     
     */
    public void setItemDisplayWidth(LengthDimension value) {
        this.itemDisplayWidth = value;
    }

    /**
     * Gets the value of the itemThickness property.
     * 
     * @return
     *     possible object is
     *     {@link LengthDimension }
     *     
     */
    public LengthDimension getItemThickness() {
        return itemThickness;
    }

    /**
     * Sets the value of the itemThickness property.
     * 
     * @param value
     *     allowed object is
     *     {@link LengthDimension }
     *     
     */
    public void setItemThickness(LengthDimension value) {
        this.itemThickness = value;
    }

    /**
     * Gets the value of the lensCoverage property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getLensCoverage() {
        return lensCoverage;
    }

    /**
     * Sets the value of the lensCoverage property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setLensCoverage(String value) {
        this.lensCoverage = value;
    }

    /**
     * Gets the value of the lensSystemSpecialFunctions property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the lensSystemSpecialFunctions property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getLensSystemSpecialFunctions().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getLensSystemSpecialFunctions() {
        if (lensSystemSpecialFunctions == null) {
            lensSystemSpecialFunctions = new ArrayList<String>();
        }
        return this.lensSystemSpecialFunctions;
    }

    /**
     * Gets the value of the lightSensitivity property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getLightSensitivity() {
        return lightSensitivity;
    }

    /**
     * Sets the value of the lightSensitivity property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setLightSensitivity(String value) {
        this.lightSensitivity = value;
    }

    /**
     * Gets the value of the lithiumBatteryEnergyContent property.
     * 
     * @return
     *     possible object is
     *     {@link BigDecimal }
     *     
     */
    public BigDecimal getLithiumBatteryEnergyContent() {
        return lithiumBatteryEnergyContent;
    }

    /**
     * Sets the value of the lithiumBatteryEnergyContent property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigDecimal }
     *     
     */
    public void setLithiumBatteryEnergyContent(BigDecimal value) {
        this.lithiumBatteryEnergyContent = value;
    }

    /**
     * Gets the value of the lithiumBatteryPackaging property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getLithiumBatteryPackaging() {
        return lithiumBatteryPackaging;
    }

    /**
     * Sets the value of the lithiumBatteryPackaging property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setLithiumBatteryPackaging(String value) {
        this.lithiumBatteryPackaging = value;
    }

    /**
     * Gets the value of the lithiumBatteryVoltage property.
     * 
     * @return
     *     possible object is
     *     {@link BigDecimal }
     *     
     */
    public BigDecimal getLithiumBatteryVoltage() {
        return lithiumBatteryVoltage;
    }

    /**
     * Sets the value of the lithiumBatteryVoltage property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigDecimal }
     *     
     */
    public void setLithiumBatteryVoltage(BigDecimal value) {
        this.lithiumBatteryVoltage = value;
    }

    /**
     * Gets the value of the lithiumBatteryWeight property.
     * 
     * @return
     *     possible object is
     *     {@link BigDecimal }
     *     
     */
    public BigDecimal getLithiumBatteryWeight() {
        return lithiumBatteryWeight;
    }

    /**
     * Sets the value of the lithiumBatteryWeight property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigDecimal }
     *     
     */
    public void setLithiumBatteryWeight(BigDecimal value) {
        this.lithiumBatteryWeight = value;
    }

    /**
     * Gets the value of the manufacturerWarrantyDescription property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getManufacturerWarrantyDescription() {
        return manufacturerWarrantyDescription;
    }

    /**
     * Sets the value of the manufacturerWarrantyDescription property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setManufacturerWarrantyDescription(String value) {
        this.manufacturerWarrantyDescription = value;
    }

    /**
     * Gets the value of the manufacturerWarrantyType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getManufacturerWarrantyType() {
        return manufacturerWarrantyType;
    }

    /**
     * Sets the value of the manufacturerWarrantyType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setManufacturerWarrantyType(String value) {
        this.manufacturerWarrantyType = value;
    }

    /**
     * Gets the value of the maximumApertureRange property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getMaximumApertureRange() {
        return maximumApertureRange;
    }

    /**
     * Sets the value of the maximumApertureRange property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setMaximumApertureRange(String value) {
        this.maximumApertureRange = value;
    }

    /**
     * Gets the value of the maximumHeight property.
     * 
     * @return
     *     possible object is
     *     {@link LengthDimension }
     *     
     */
    public LengthDimension getMaximumHeight() {
        return maximumHeight;
    }

    /**
     * Sets the value of the maximumHeight property.
     * 
     * @param value
     *     allowed object is
     *     {@link LengthDimension }
     *     
     */
    public void setMaximumHeight(LengthDimension value) {
        this.maximumHeight = value;
    }

    /**
     * Gets the value of the maximumLifetimeCharges property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getMaximumLifetimeCharges() {
        return maximumLifetimeCharges;
    }

    /**
     * Sets the value of the maximumLifetimeCharges property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setMaximumLifetimeCharges(BigInteger value) {
        this.maximumLifetimeCharges = value;
    }

    /**
     * Gets the value of the maximumManufacturerWeightRecommended property.
     * 
     * @return
     *     possible object is
     *     {@link WeightIntegerDimension }
     *     
     */
    public WeightIntegerDimension getMaximumManufacturerWeightRecommended() {
        return maximumManufacturerWeightRecommended;
    }

    /**
     * Sets the value of the maximumManufacturerWeightRecommended property.
     * 
     * @param value
     *     allowed object is
     *     {@link WeightIntegerDimension }
     *     
     */
    public void setMaximumManufacturerWeightRecommended(WeightIntegerDimension value) {
        this.maximumManufacturerWeightRecommended = value;
    }

    /**
     * Gets the value of the mediaType property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the mediaType property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getMediaType().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getMediaType() {
        if (mediaType == null) {
            mediaType = new ArrayList<String>();
        }
        return this.mediaType;
    }

    /**
     * Gets the value of the memoryStorageCapacity property.
     * 
     * @return
     *     possible object is
     *     {@link MemorySizeDimension }
     *     
     */
    public MemorySizeDimension getMemoryStorageCapacity() {
        return memoryStorageCapacity;
    }

    /**
     * Sets the value of the memoryStorageCapacity property.
     * 
     * @param value
     *     allowed object is
     *     {@link MemorySizeDimension }
     *     
     */
    public void setMemoryStorageCapacity(MemorySizeDimension value) {
        this.memoryStorageCapacity = value;
    }

    /**
     * Gets the value of the memoryTechnology property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getMemoryTechnology() {
        return memoryTechnology;
    }

    /**
     * Sets the value of the memoryTechnology property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setMemoryTechnology(String value) {
        this.memoryTechnology = value;
    }

    /**
     * Gets the value of the mfrWarrantyDescriptionLabor property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getMfrWarrantyDescriptionLabor() {
        return mfrWarrantyDescriptionLabor;
    }

    /**
     * Sets the value of the mfrWarrantyDescriptionLabor property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setMfrWarrantyDescriptionLabor(String value) {
        this.mfrWarrantyDescriptionLabor = value;
    }

    /**
     * Gets the value of the mfrWarrantyDescriptionParts property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getMfrWarrantyDescriptionParts() {
        return mfrWarrantyDescriptionParts;
    }

    /**
     * Sets the value of the mfrWarrantyDescriptionParts property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setMfrWarrantyDescriptionParts(String value) {
        this.mfrWarrantyDescriptionParts = value;
    }

    /**
     * Gets the value of the microphoneOperationMode property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the microphoneOperationMode property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getMicrophoneOperationMode().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getMicrophoneOperationMode() {
        if (microphoneOperationMode == null) {
            microphoneOperationMode = new ArrayList<String>();
        }
        return this.microphoneOperationMode;
    }

    /**
     * Gets the value of the minFocalRange property.
     * 
     * @return
     *     possible object is
     *     {@link LengthDimension }
     *     
     */
    public LengthDimension getMinFocalRange() {
        return minFocalRange;
    }

    /**
     * Sets the value of the minFocalRange property.
     * 
     * @param value
     *     allowed object is
     *     {@link LengthDimension }
     *     
     */
    public void setMinFocalRange(LengthDimension value) {
        this.minFocalRange = value;
    }

    /**
     * Gets the value of the minimumHeight property.
     * 
     * @return
     *     possible object is
     *     {@link LengthDimension }
     *     
     */
    public LengthDimension getMinimumHeight() {
        return minimumHeight;
    }

    /**
     * Sets the value of the minimumHeight property.
     * 
     * @param value
     *     allowed object is
     *     {@link LengthDimension }
     *     
     */
    public void setMinimumHeight(LengthDimension value) {
        this.minimumHeight = value;
    }

    /**
     * Gets the value of the mountingType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getMountingType() {
        return mountingType;
    }

    /**
     * Sets the value of the mountingType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setMountingType(String value) {
        this.mountingType = value;
    }

    /**
     * Gets the value of the numberOfLithiumIonCells property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getNumberOfLithiumIonCells() {
        return numberOfLithiumIonCells;
    }

    /**
     * Sets the value of the numberOfLithiumIonCells property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setNumberOfLithiumIonCells(BigInteger value) {
        this.numberOfLithiumIonCells = value;
    }

    /**
     * Gets the value of the numberOfLithiumMetalCells property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getNumberOfLithiumMetalCells() {
        return numberOfLithiumMetalCells;
    }

    /**
     * Sets the value of the numberOfLithiumMetalCells property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setNumberOfLithiumMetalCells(BigInteger value) {
        this.numberOfLithiumMetalCells = value;
    }

    /**
     * Gets the value of the opticalSensorResolution property.
     * 
     * @return
     *     possible object is
     *     {@link PixelDimension }
     *     
     */
    public PixelDimension getOpticalSensorResolution() {
        return opticalSensorResolution;
    }

    /**
     * Sets the value of the opticalSensorResolution property.
     * 
     * @param value
     *     allowed object is
     *     {@link PixelDimension }
     *     
     */
    public void setOpticalSensorResolution(PixelDimension value) {
        this.opticalSensorResolution = value;
    }

    /**
     * Gets the value of the opticalSensorSize property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getOpticalSensorSize() {
        return opticalSensorSize;
    }

    /**
     * Sets the value of the opticalSensorSize property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setOpticalSensorSize(String value) {
        this.opticalSensorSize = value;
    }

    /**
     * Gets the value of the opticalSensorTechnology property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getOpticalSensorTechnology() {
        return opticalSensorTechnology;
    }

    /**
     * Sets the value of the opticalSensorTechnology property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setOpticalSensorTechnology(String value) {
        this.opticalSensorTechnology = value;
    }

    /**
     * Gets the value of the parentage property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getParentage() {
        return parentage;
    }

    /**
     * Sets the value of the parentage property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setParentage(String value) {
        this.parentage = value;
    }

    /**
     * Gets the value of the variationTheme property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getVariationTheme() {
        return variationTheme;
    }

    /**
     * Sets the value of the variationTheme property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setVariationTheme(String value) {
        this.variationTheme = value;
    }

    /**
     * Gets the value of the rangefinderType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getRangefinderType() {
        return rangefinderType;
    }

    /**
     * Sets the value of the rangefinderType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setRangefinderType(String value) {
        this.rangefinderType = value;
    }

    /**
     * Gets the value of the rechargeableBatteryIncluded property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public Boolean isRechargeableBatteryIncluded() {
        return rechargeableBatteryIncluded;
    }

    /**
     * Sets the value of the rechargeableBatteryIncluded property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setRechargeableBatteryIncluded(Boolean value) {
        this.rechargeableBatteryIncluded = value;
    }

    /**
     * Gets the value of the remoteControlDescription property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getRemoteControlDescription() {
        return remoteControlDescription;
    }

    /**
     * Sets the value of the remoteControlDescription property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setRemoteControlDescription(String value) {
        this.remoteControlDescription = value;
    }

    /**
     * Gets the value of the removableStorageInterface property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getRemovableStorageInterface() {
        return removableStorageInterface;
    }

    /**
     * Sets the value of the removableStorageInterface property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setRemovableStorageInterface(String value) {
        this.removableStorageInterface = value;
    }

    /**
     * Gets the value of the rollQuantity property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getRollQuantity() {
        return rollQuantity;
    }

    /**
     * Sets the value of the rollQuantity property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setRollQuantity(String value) {
        this.rollQuantity = value;
    }

    /**
     * Gets the value of the sellerWarrantyDescription property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getSellerWarrantyDescription() {
        return sellerWarrantyDescription;
    }

    /**
     * Sets the value of the sellerWarrantyDescription property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSellerWarrantyDescription(String value) {
        this.sellerWarrantyDescription = value;
    }

    /**
     * Gets the value of the sizeName property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getSizeName() {
        return sizeName;
    }

    /**
     * Sets the value of the sizeName property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSizeName(String value) {
        this.sizeName = value;
    }

    /**
     * Gets the value of the shootingModes property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the shootingModes property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getShootingModes().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getShootingModes() {
        if (shootingModes == null) {
            shootingModes = new ArrayList<String>();
        }
        return this.shootingModes;
    }

    /**
     * Gets the value of the supportedImageType property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the supportedImageType property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getSupportedImageType().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link ImageFormatTypeValues }
     * 
     * 
     */
    public List<ImageFormatTypeValues> getSupportedImageType() {
        if (supportedImageType == null) {
            supportedImageType = new ArrayList<ImageFormatTypeValues>();
        }
        return this.supportedImageType;
    }

    /**
     * Gets the value of the styleName property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getStyleName() {
        return styleName;
    }

    /**
     * Sets the value of the styleName property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setStyleName(String value) {
        this.styleName = value;
    }

    /**
     * Gets the value of the videoInput property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the videoInput property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getVideoInput().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getVideoInput() {
        if (videoInput == null) {
            videoInput = new ArrayList<String>();
        }
        return this.videoInput;
    }

    /**
     * Gets the value of the videoInputFormat property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the videoInputFormat property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getVideoInputFormat().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getVideoInputFormat() {
        if (videoInputFormat == null) {
            videoInputFormat = new ArrayList<String>();
        }
        return this.videoInputFormat;
    }

    /**
     * Gets the value of the videoInputSpecialEffects property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the videoInputSpecialEffects property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getVideoInputSpecialEffects().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getVideoInputSpecialEffects() {
        if (videoInputSpecialEffects == null) {
            videoInputSpecialEffects = new ArrayList<String>();
        }
        return this.videoInputSpecialEffects;
    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;choice>
     *         &lt;element ref="{}FilmCamera"/>
     *         &lt;element ref="{}Camcorder"/>
     *         &lt;element ref="{}DigitalCamera"/>
     *         &lt;element ref="{}DigitalFrame"/>
     *         &lt;element ref="{}Binocular"/>
     *         &lt;element ref="{}SurveillanceSystem"/>
     *         &lt;element ref="{}Telescope"/>
     *         &lt;element ref="{}Microscope"/>
     *         &lt;element ref="{}Darkroom"/>
     *         &lt;element ref="{}Lens"/>
     *         &lt;element ref="{}LensAccessory"/>
     *         &lt;element ref="{}Filter"/>
     *         &lt;element ref="{}Film"/>
     *         &lt;element ref="{}BagCase"/>
     *         &lt;element ref="{}BlankMedia"/>
     *         &lt;element ref="{}PhotoPaper"/>
     *         &lt;element ref="{}Cleaner"/>
     *         &lt;element ref="{}Flash"/>
     *         &lt;element ref="{}TripodStand"/>
     *         &lt;element name="Lighting" type="{}LightingType"/>
     *         &lt;element ref="{}Projection"/>
     *         &lt;element ref="{}PhotoStudio"/>
     *         &lt;element ref="{}LightMeter"/>
     *         &lt;element ref="{}PowerSupply"/>
     *         &lt;element ref="{}OtherAccessory"/>
     *       &lt;/choice>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "filmCamera",
        "camcorder",
        "digitalCamera",
        "digitalFrame",
        "binocular",
        "surveillanceSystem",
        "telescope",
        "microscope",
        "darkroom",
        "lens",
        "lensAccessory",
        "filter",
        "film",
        "bagCase",
        "blankMedia",
        "photoPaper",
        "cleaner",
        "flash",
        "tripodStand",
        "lighting",
        "projection",
        "photoStudio",
        "lightMeter",
        "powerSupply",
        "otherAccessory"
    })
    public static class ProductType {

        @XmlElement(name = "FilmCamera")
        protected FilmCamera filmCamera;
        @XmlElement(name = "Camcorder")
        protected Camcorder camcorder;
        @XmlElement(name = "DigitalCamera")
        protected DigitalCamera digitalCamera;
        @XmlElement(name = "DigitalFrame")
        protected DigitalFrame digitalFrame;
        @XmlElement(name = "Binocular")
        protected Binocular binocular;
        @XmlElement(name = "SurveillanceSystem")
        protected SurveillanceSystem surveillanceSystem;
        @XmlElement(name = "Telescope")
        protected Telescope telescope;
        @XmlElement(name = "Microscope")
        protected Microscope microscope;
        @XmlElement(name = "Darkroom")
        protected Darkroom darkroom;
        @XmlElement(name = "Lens")
        protected Lens lens;
        @XmlElement(name = "LensAccessory")
        protected LensAccessory lensAccessory;
        @XmlElement(name = "Filter")
        protected Filter filter;
        @XmlElement(name = "Film")
        protected Film film;
        @XmlElement(name = "BagCase")
        protected BagCase bagCase;
        @XmlElement(name = "BlankMedia")
        protected BlankMedia blankMedia;
        @XmlElement(name = "PhotoPaper")
        protected PhotoPaper photoPaper;
        @XmlElement(name = "Cleaner")
        protected Cleaner cleaner;
        @XmlElement(name = "Flash")
        protected Flash flash;
        @XmlElement(name = "TripodStand")
        protected TripodStand tripodStand;
        @XmlElement(name = "Lighting")
        protected LightingType lighting;
        @XmlElement(name = "Projection")
        protected Projection projection;
        @XmlElement(name = "PhotoStudio")
        protected PhotoStudio photoStudio;
        @XmlElement(name = "LightMeter")
        protected LightMeter lightMeter;
        @XmlElement(name = "PowerSupply")
        protected PowerSupply powerSupply;
        @XmlElement(name = "OtherAccessory")
        protected OtherAccessory otherAccessory;

        /**
         * Gets the value of the filmCamera property.
         * 
         * @return
         *     possible object is
         *     {@link FilmCamera }
         *     
         */
        public FilmCamera getFilmCamera() {
            return filmCamera;
        }

        /**
         * Sets the value of the filmCamera property.
         * 
         * @param value
         *     allowed object is
         *     {@link FilmCamera }
         *     
         */
        public void setFilmCamera(FilmCamera value) {
            this.filmCamera = value;
        }

        /**
         * Gets the value of the camcorder property.
         * 
         * @return
         *     possible object is
         *     {@link Camcorder }
         *     
         */
        public Camcorder getCamcorder() {
            return camcorder;
        }

        /**
         * Sets the value of the camcorder property.
         * 
         * @param value
         *     allowed object is
         *     {@link Camcorder }
         *     
         */
        public void setCamcorder(Camcorder value) {
            this.camcorder = value;
        }

        /**
         * Gets the value of the digitalCamera property.
         * 
         * @return
         *     possible object is
         *     {@link DigitalCamera }
         *     
         */
        public DigitalCamera getDigitalCamera() {
            return digitalCamera;
        }

        /**
         * Sets the value of the digitalCamera property.
         * 
         * @param value
         *     allowed object is
         *     {@link DigitalCamera }
         *     
         */
        public void setDigitalCamera(DigitalCamera value) {
            this.digitalCamera = value;
        }

        /**
         * Gets the value of the digitalFrame property.
         * 
         * @return
         *     possible object is
         *     {@link DigitalFrame }
         *     
         */
        public DigitalFrame getDigitalFrame() {
            return digitalFrame;
        }

        /**
         * Sets the value of the digitalFrame property.
         * 
         * @param value
         *     allowed object is
         *     {@link DigitalFrame }
         *     
         */
        public void setDigitalFrame(DigitalFrame value) {
            this.digitalFrame = value;
        }

        /**
         * Gets the value of the binocular property.
         * 
         * @return
         *     possible object is
         *     {@link Binocular }
         *     
         */
        public Binocular getBinocular() {
            return binocular;
        }

        /**
         * Sets the value of the binocular property.
         * 
         * @param value
         *     allowed object is
         *     {@link Binocular }
         *     
         */
        public void setBinocular(Binocular value) {
            this.binocular = value;
        }

        /**
         * Gets the value of the surveillanceSystem property.
         * 
         * @return
         *     possible object is
         *     {@link SurveillanceSystem }
         *     
         */
        public SurveillanceSystem getSurveillanceSystem() {
            return surveillanceSystem;
        }

        /**
         * Sets the value of the surveillanceSystem property.
         * 
         * @param value
         *     allowed object is
         *     {@link SurveillanceSystem }
         *     
         */
        public void setSurveillanceSystem(SurveillanceSystem value) {
            this.surveillanceSystem = value;
        }

        /**
         * Gets the value of the telescope property.
         * 
         * @return
         *     possible object is
         *     {@link Telescope }
         *     
         */
        public Telescope getTelescope() {
            return telescope;
        }

        /**
         * Sets the value of the telescope property.
         * 
         * @param value
         *     allowed object is
         *     {@link Telescope }
         *     
         */
        public void setTelescope(Telescope value) {
            this.telescope = value;
        }

        /**
         * Gets the value of the microscope property.
         * 
         * @return
         *     possible object is
         *     {@link Microscope }
         *     
         */
        public Microscope getMicroscope() {
            return microscope;
        }

        /**
         * Sets the value of the microscope property.
         * 
         * @param value
         *     allowed object is
         *     {@link Microscope }
         *     
         */
        public void setMicroscope(Microscope value) {
            this.microscope = value;
        }

        /**
         * Gets the value of the darkroom property.
         * 
         * @return
         *     possible object is
         *     {@link Darkroom }
         *     
         */
        public Darkroom getDarkroom() {
            return darkroom;
        }

        /**
         * Sets the value of the darkroom property.
         * 
         * @param value
         *     allowed object is
         *     {@link Darkroom }
         *     
         */
        public void setDarkroom(Darkroom value) {
            this.darkroom = value;
        }

        /**
         * Gets the value of the lens property.
         * 
         * @return
         *     possible object is
         *     {@link Lens }
         *     
         */
        public Lens getLens() {
            return lens;
        }

        /**
         * Sets the value of the lens property.
         * 
         * @param value
         *     allowed object is
         *     {@link Lens }
         *     
         */
        public void setLens(Lens value) {
            this.lens = value;
        }

        /**
         * Gets the value of the lensAccessory property.
         * 
         * @return
         *     possible object is
         *     {@link LensAccessory }
         *     
         */
        public LensAccessory getLensAccessory() {
            return lensAccessory;
        }

        /**
         * Sets the value of the lensAccessory property.
         * 
         * @param value
         *     allowed object is
         *     {@link LensAccessory }
         *     
         */
        public void setLensAccessory(LensAccessory value) {
            this.lensAccessory = value;
        }

        /**
         * Gets the value of the filter property.
         * 
         * @return
         *     possible object is
         *     {@link Filter }
         *     
         */
        public Filter getFilter() {
            return filter;
        }

        /**
         * Sets the value of the filter property.
         * 
         * @param value
         *     allowed object is
         *     {@link Filter }
         *     
         */
        public void setFilter(Filter value) {
            this.filter = value;
        }

        /**
         * Gets the value of the film property.
         * 
         * @return
         *     possible object is
         *     {@link Film }
         *     
         */
        public Film getFilm() {
            return film;
        }

        /**
         * Sets the value of the film property.
         * 
         * @param value
         *     allowed object is
         *     {@link Film }
         *     
         */
        public void setFilm(Film value) {
            this.film = value;
        }

        /**
         * Gets the value of the bagCase property.
         * 
         * @return
         *     possible object is
         *     {@link BagCase }
         *     
         */
        public BagCase getBagCase() {
            return bagCase;
        }

        /**
         * Sets the value of the bagCase property.
         * 
         * @param value
         *     allowed object is
         *     {@link BagCase }
         *     
         */
        public void setBagCase(BagCase value) {
            this.bagCase = value;
        }

        /**
         * Gets the value of the blankMedia property.
         * 
         * @return
         *     possible object is
         *     {@link BlankMedia }
         *     
         */
        public BlankMedia getBlankMedia() {
            return blankMedia;
        }

        /**
         * Sets the value of the blankMedia property.
         * 
         * @param value
         *     allowed object is
         *     {@link BlankMedia }
         *     
         */
        public void setBlankMedia(BlankMedia value) {
            this.blankMedia = value;
        }

        /**
         * Gets the value of the photoPaper property.
         * 
         * @return
         *     possible object is
         *     {@link PhotoPaper }
         *     
         */
        public PhotoPaper getPhotoPaper() {
            return photoPaper;
        }

        /**
         * Sets the value of the photoPaper property.
         * 
         * @param value
         *     allowed object is
         *     {@link PhotoPaper }
         *     
         */
        public void setPhotoPaper(PhotoPaper value) {
            this.photoPaper = value;
        }

        /**
         * Gets the value of the cleaner property.
         * 
         * @return
         *     possible object is
         *     {@link Cleaner }
         *     
         */
        public Cleaner getCleaner() {
            return cleaner;
        }

        /**
         * Sets the value of the cleaner property.
         * 
         * @param value
         *     allowed object is
         *     {@link Cleaner }
         *     
         */
        public void setCleaner(Cleaner value) {
            this.cleaner = value;
        }

        /**
         * Gets the value of the flash property.
         * 
         * @return
         *     possible object is
         *     {@link Flash }
         *     
         */
        public Flash getFlash() {
            return flash;
        }

        /**
         * Sets the value of the flash property.
         * 
         * @param value
         *     allowed object is
         *     {@link Flash }
         *     
         */
        public void setFlash(Flash value) {
            this.flash = value;
        }

        /**
         * Gets the value of the tripodStand property.
         * 
         * @return
         *     possible object is
         *     {@link TripodStand }
         *     
         */
        public TripodStand getTripodStand() {
            return tripodStand;
        }

        /**
         * Sets the value of the tripodStand property.
         * 
         * @param value
         *     allowed object is
         *     {@link TripodStand }
         *     
         */
        public void setTripodStand(TripodStand value) {
            this.tripodStand = value;
        }

        /**
         * Gets the value of the lighting property.
         * 
         * @return
         *     possible object is
         *     {@link LightingType }
         *     
         */
        public LightingType getLighting() {
            return lighting;
        }

        /**
         * Sets the value of the lighting property.
         * 
         * @param value
         *     allowed object is
         *     {@link LightingType }
         *     
         */
        public void setLighting(LightingType value) {
            this.lighting = value;
        }

        /**
         * Gets the value of the projection property.
         * 
         * @return
         *     possible object is
         *     {@link Projection }
         *     
         */
        public Projection getProjection() {
            return projection;
        }

        /**
         * Sets the value of the projection property.
         * 
         * @param value
         *     allowed object is
         *     {@link Projection }
         *     
         */
        public void setProjection(Projection value) {
            this.projection = value;
        }

        /**
         * Gets the value of the photoStudio property.
         * 
         * @return
         *     possible object is
         *     {@link PhotoStudio }
         *     
         */
        public PhotoStudio getPhotoStudio() {
            return photoStudio;
        }

        /**
         * Sets the value of the photoStudio property.
         * 
         * @param value
         *     allowed object is
         *     {@link PhotoStudio }
         *     
         */
        public void setPhotoStudio(PhotoStudio value) {
            this.photoStudio = value;
        }

        /**
         * Gets the value of the lightMeter property.
         * 
         * @return
         *     possible object is
         *     {@link LightMeter }
         *     
         */
        public LightMeter getLightMeter() {
            return lightMeter;
        }

        /**
         * Sets the value of the lightMeter property.
         * 
         * @param value
         *     allowed object is
         *     {@link LightMeter }
         *     
         */
        public void setLightMeter(LightMeter value) {
            this.lightMeter = value;
        }

        /**
         * Gets the value of the powerSupply property.
         * 
         * @return
         *     possible object is
         *     {@link PowerSupply }
         *     
         */
        public PowerSupply getPowerSupply() {
            return powerSupply;
        }

        /**
         * Sets the value of the powerSupply property.
         * 
         * @param value
         *     allowed object is
         *     {@link PowerSupply }
         *     
         */
        public void setPowerSupply(PowerSupply value) {
            this.powerSupply = value;
        }

        /**
         * Gets the value of the otherAccessory property.
         * 
         * @return
         *     possible object is
         *     {@link OtherAccessory }
         *     
         */
        public OtherAccessory getOtherAccessory() {
            return otherAccessory;
        }

        /**
         * Sets the value of the otherAccessory property.
         * 
         * @param value
         *     allowed object is
         *     {@link OtherAccessory }
         *     
         */
        public void setOtherAccessory(OtherAccessory value) {
            this.otherAccessory = value;
        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="RebateStartDate" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
     *         &lt;element name="RebateEndDate" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
     *         &lt;element name="RebateMessage" type="{}TwoFiftyStringNotNull"/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "rebateStartDate",
        "rebateEndDate",
        "rebateMessage"
    })
    public static class Rebate {

        @XmlElement(name = "RebateStartDate", required = true)
        @XmlSchemaType(name = "dateTime")
        protected XMLGregorianCalendar rebateStartDate;
        @XmlElement(name = "RebateEndDate", required = true)
        @XmlSchemaType(name = "dateTime")
        protected XMLGregorianCalendar rebateEndDate;
        @XmlElement(name = "RebateMessage", required = true)
        @XmlJavaTypeAdapter(NormalizedStringAdapter.class)
        protected String rebateMessage;

        /**
         * Gets the value of the rebateStartDate property.
         * 
         * @return
         *     possible object is
         *     {@link XMLGregorianCalendar }
         *     
         */
        public XMLGregorianCalendar getRebateStartDate() {
            return rebateStartDate;
        }

        /**
         * Sets the value of the rebateStartDate property.
         * 
         * @param value
         *     allowed object is
         *     {@link XMLGregorianCalendar }
         *     
         */
        public void setRebateStartDate(XMLGregorianCalendar value) {
            this.rebateStartDate = value;
        }

        /**
         * Gets the value of the rebateEndDate property.
         * 
         * @return
         *     possible object is
         *     {@link XMLGregorianCalendar }
         *     
         */
        public XMLGregorianCalendar getRebateEndDate() {
            return rebateEndDate;
        }

        /**
         * Sets the value of the rebateEndDate property.
         * 
         * @param value
         *     allowed object is
         *     {@link XMLGregorianCalendar }
         *     
         */
        public void setRebateEndDate(XMLGregorianCalendar value) {
            this.rebateEndDate = value;
        }

        /**
         * Gets the value of the rebateMessage property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getRebateMessage() {
            return rebateMessage;
        }

        /**
         * Sets the value of the rebateMessage property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setRebateMessage(String value) {
            this.rebateMessage = value;
        }

    }

}