/*
 * #%L
 * OME-BIOFORMATS C++ library for image IO.
 * %%
 * Copyright © 2006 - 2016 Open Microscopy Environment:
 *   - Massachusetts Institute of Technology
 *   - National Institutes of Health
 *   - University of Dundee
 *   - Board of Regents of the University of Wisconsin-Madison
 *   - Glencoe Software, Inc.
 * %%
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * The views and conclusions contained in the software and documentation are
 * those of the authors and should not be interpreted as representing official
 * policies, either expressed or implied, of any organization.
 * #L%
 */

/*─────────────────────────────────────────────────────────────────────────────
 *
 * THIS IS AUTOMATICALLY GENERATED CODE.  DO NOT MODIFY.
 *
 *─────────────────────────────────────────────────────────────────────────────
 */

#ifndef OME_XML_META_METADATASTORE_H
#define OME_XML_META_METADATASTORE_H

#include <string>

#include <ome/compat/memory.h>

#include <ome/xml/meta/BaseMetadata.h>
#include <ome/xml/meta/MetadataRoot.h>
#include <ome/xml/model/AffineTransform.h>

#include <ome/xml/model/enums/AcquisitionMode.h>
#include <ome/xml/model/enums/ArcType.h>
#include <ome/xml/model/enums/Binning.h>
#include <ome/xml/model/enums/Compression.h>
#include <ome/xml/model/enums/ContrastMethod.h>
#include <ome/xml/model/enums/Correction.h>
#include <ome/xml/model/enums/DetectorType.h>
#include <ome/xml/model/enums/DimensionOrder.h>
#include <ome/xml/model/enums/ExperimentType.h>
#include <ome/xml/model/enums/FilamentType.h>
#include <ome/xml/model/enums/FillRule.h>
#include <ome/xml/model/enums/FilterType.h>
#include <ome/xml/model/enums/FontFamily.h>
#include <ome/xml/model/enums/FontStyle.h>
#include <ome/xml/model/enums/IlluminationType.h>
#include <ome/xml/model/enums/Immersion.h>
#include <ome/xml/model/enums/LaserMedium.h>
#include <ome/xml/model/enums/LaserType.h>
#include <ome/xml/model/enums/LineCap.h>
#include <ome/xml/model/enums/Marker.h>
#include <ome/xml/model/enums/Medium.h>
#include <ome/xml/model/enums/MicrobeamManipulationType.h>
#include <ome/xml/model/enums/MicroscopeType.h>
#include <ome/xml/model/enums/NamingConvention.h>
#include <ome/xml/model/enums/PixelType.h>
#include <ome/xml/model/enums/Pulse.h>

#include <ome/xml/model/primitives/Color.h>
#include <ome/xml/model/primitives/ConstrainedNumeric.h>
#include <ome/xml/model/primitives/NonNegativeFloat.h>
#include <ome/xml/model/primitives/NonNegativeInteger.h>
#include <ome/xml/model/primitives/NonNegativeLong.h>
#include <ome/xml/model/primitives/NumericConstraints.h>
#include <ome/xml/model/primitives/PercentFraction.h>
#include <ome/xml/model/primitives/PositiveFloat.h>
#include <ome/xml/model/primitives/PositiveInteger.h>
#include <ome/xml/model/primitives/PositiveLong.h>
#include <ome/xml/model/primitives/Timestamp.h>

namespace ome
{
  namespace xml
  {
    namespace meta
    {

      /**
       * Metadata storage interface.
       *
       * MetadataStore is a proxy whose responsibility it is to
       * marshal biological image data into a particular storage
       * medium.  This interface encompasses the metadata that any
       * specific storage medium (file, relational database, etc.)
       * should be expected to store into its backing data model.
       *
       * The MetadataStore interface goes hand in hand with the
       * MetadataRetrieve interface. Essentially, MetadataRetrieve
       * provides the "getter" methods for a storage medium, and
       * MetadataStore provides the "setter" methods.  Since it often
       * makes sense for a storage medium to implement both
       * interfaces, there is also an Metadata interface encompassing
       * both MetadataStore and MetadataRetrieve, which reduces the
       * need to cast between object types.
       *
       * See ome::xml::meta::OMEXMLMetadata for an
       * example implementation.
       *
       * @note It is strongly recommended that applications (e.g.,
       * file format readers) using MetadataStore fill it with
       * information in a linear order. Specifically, iterating over
       * entities from "leftmost" index to "rightmost" index is
       * required for certain implementations such as OMERO's
       * OMEROMetadataStore. For example, when filling
       * ::ome::xml::model::Image, ::ome::xml::model::Pixels and
       * ::ome::xml::model::Plane information, an outer loop should
       * iterate across @c imageIndex, an inner loop should iterate
       * across @c pixelsIndex, and an innermost loop should handle @c
       * planeIndex. For an illustration of the ideal traversal order,
       * see MetadataConverter.
       *
       * @sa MetadataRetrieve, Metadata,
       * ome::xml::meta::OMEXMLMetadata.
       */
      class MetadataStore : virtual public BaseMetadata
      {
      protected:
        /// Constructor.
        MetadataStore()
        {}

      public:
        /// Destructor.
        virtual
        ~MetadataStore()
        {}

      private:
        /// Copy constructor (deleted).
        MetadataStore (const MetadataStore&);

        /// Assignment operator (deleted).
        MetadataStore&
        operator= (const MetadataStore&);

      public:
        /**
         * Create root node.  The action taken here is specific to the
         * concrete metadata implementation.
         */
        virtual void
        createRoot() = 0;

        /**
         * Get the root node of the metadata.  Note that the root node
         * type will be specific to the concrete metadata
         * implementation.
         *
         * @returns a pointer to the root node.
         *
         * @todo should this be a reference or shared_ptr?
         */
        virtual ome::compat::shared_ptr<MetadataRoot>&
        getRoot() = 0;

        /**
         * Set the root node of the metadata.  Note that the root node
         * type will be specific to the concrete metadata
         * implementation.  An exception will be thrown if the root
         * node is of an incompatible type.
         *
         * @param root a pointer to the root node.
         *
         * @todo should this be a reference or shared_ptr?
         */
        virtual void
        setRoot(ome::compat::shared_ptr<MetadataRoot>& root) = 0;

        /**
         * Set the BigEndian property of Pixels.
         *
         * @param bigEndian @c true if big endian, or @c false if little endian.
         * @param imageIndex the Image index.
         * @param binDataIndex BinData index (unused).
         */
        virtual void
        setPixelsBinDataBigEndian(bool bigEndian,
                                  index_type imageIndex,
                                  index_type binDataIndex = 0) = 0;

	/**
         * Set the UUID associated with this collection of metadata.
         *
         * @param uuid the UUID to set.
         */
	virtual void
        setUUID(const std::string& uuid) = 0;

	/**
         * Set the ID property of Arc.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setArcID(std::string id, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the LotNumber property of Arc.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setArcLotNumber(std::string lotNumber, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Manufacturer property of Arc.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setArcManufacturer(std::string manufacturer, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Model property of Arc.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setArcModel(std::string model, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Power property of Arc.
         *
         * @param power Power to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setArcPower(double power, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the SerialNumber property of Arc.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setArcSerialNumber(std::string serialNumber, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Type property of Arc.
         *
         * @param type Type to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setArcType(ome::xml::model::enums::ArcType type, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the FileName property of BinaryFile.
         *
         * @param fileName FileName to set.
         * @param fileAnnotationIndex the FileAnnotation index.
         */
	virtual void
        setBinaryFileFileName(std::string fileName, index_type fileAnnotationIndex) = 0;

	/**
         * Set the MIMEType property of BinaryFile.
         *
         * @param mimeType MIMEType to set.
         * @param fileAnnotationIndex the FileAnnotation index.
         */
	virtual void
        setBinaryFileMIMEType(std::string mimeType, index_type fileAnnotationIndex) = 0;

	/**
         * Set the Size property of BinaryFile.
         *
         * @param size Size to set.
         * @param fileAnnotationIndex the FileAnnotation index.
         */
	virtual void
        setBinaryFileSize(ome::xml::model::primitives::NonNegativeLong size, index_type fileAnnotationIndex) = 0;

	/**
         * Set the MetadataFile property of BinaryOnly.
         *
         * @param metadataFile MetadataFile to set.
         */
	virtual void
        setBinaryOnlyMetadataFile(std::string metadataFile) = 0;

	/**
         * Set the UUID property of BinaryOnly.
         *
         * @param uuid UUID to set.
         */
	virtual void
        setBinaryOnlyUUID(std::string uuid) = 0;

	/**
         * Set the AnnotationRef property of BooleanAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param booleanAnnotationIndex the BooleanAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setBooleanAnnotationAnnotationRef(const std::string& annotation, index_type booleanAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of BooleanAnnotation.
         *
         * @param annotator Annotator to set.
         * @param booleanAnnotationIndex the BooleanAnnotation index.
         */
	virtual void
        setBooleanAnnotationAnnotator(std::string annotator, index_type booleanAnnotationIndex) = 0;

	/**
         * Set the Description property of BooleanAnnotation.
         *
         * @param description Description to set.
         * @param booleanAnnotationIndex the BooleanAnnotation index.
         */
	virtual void
        setBooleanAnnotationDescription(std::string description, index_type booleanAnnotationIndex) = 0;

	/**
         * Set the ID property of BooleanAnnotation.
         *
         * @param id ID to set.
         * @param booleanAnnotationIndex the BooleanAnnotation index.
         */
	virtual void
        setBooleanAnnotationID(std::string id, index_type booleanAnnotationIndex) = 0;

	/**
         * Set the Namespace property of BooleanAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param booleanAnnotationIndex the BooleanAnnotation index.
         */
	virtual void
        setBooleanAnnotationNamespace(std::string namespace_, index_type booleanAnnotationIndex) = 0;

	/**
         * Set the Value property of BooleanAnnotation.
         *
         * @param value Value to set.
         * @param booleanAnnotationIndex the BooleanAnnotation index.
         */
	virtual void
        setBooleanAnnotationValue(bool value, index_type booleanAnnotationIndex) = 0;

	/**
         * Set the AcquisitionMode property of Channel.
         *
         * @param acquisitionMode AcquisitionMode to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelAcquisitionMode(ome::xml::model::enums::AcquisitionMode acquisitionMode, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the AnnotationRef property of Channel.
         *
         * @param annotation AnnotationRef to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setChannelAnnotationRef(const std::string& annotation, index_type imageIndex, index_type channelIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Color property of Channel.
         *
         * @param color Color to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelColor(ome::xml::model::primitives::Color color, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the ContrastMethod property of Channel.
         *
         * @param contrastMethod ContrastMethod to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelContrastMethod(ome::xml::model::enums::ContrastMethod contrastMethod, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the EmissionWavelength property of Channel.
         *
         * @param emissionWavelength EmissionWavelength to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelEmissionWavelength(ome::xml::model::primitives::PositiveInteger emissionWavelength, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the ExcitationWavelength property of Channel.
         *
         * @param excitationWavelength ExcitationWavelength to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelExcitationWavelength(ome::xml::model::primitives::PositiveInteger excitationWavelength, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the FilterSetRef property of Channel.
         *
         * @param filterSet FilterSetRef to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelFilterSetRef(const std::string& filterSet, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the Fluor property of Channel.
         *
         * @param fluor Fluor to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelFluor(std::string fluor, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the ID property of Channel.
         *
         * @param id ID to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelID(std::string id, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the IlluminationType property of Channel.
         *
         * @param illuminationType IlluminationType to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelIlluminationType(ome::xml::model::enums::IlluminationType illuminationType, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the NDFilter property of Channel.
         *
         * @param ndFilter NDFilter to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelNDFilter(double ndFilter, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the Name property of Channel.
         *
         * @param name Name to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelName(std::string name, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the PinholeSize property of Channel.
         *
         * @param pinholeSize PinholeSize to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelPinholeSize(double pinholeSize, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the PockelCellSetting property of Channel.
         *
         * @param pockelCellSetting PockelCellSetting to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelPockelCellSetting(int32_t pockelCellSetting, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the SamplesPerPixel property of Channel.
         *
         * @param samplesPerPixel SamplesPerPixel to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelSamplesPerPixel(ome::xml::model::primitives::PositiveInteger samplesPerPixel, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the AnnotationRef property of CommentAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param commentAnnotationIndex the CommentAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setCommentAnnotationAnnotationRef(const std::string& annotation, index_type commentAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of CommentAnnotation.
         *
         * @param annotator Annotator to set.
         * @param commentAnnotationIndex the CommentAnnotation index.
         */
	virtual void
        setCommentAnnotationAnnotator(std::string annotator, index_type commentAnnotationIndex) = 0;

	/**
         * Set the Description property of CommentAnnotation.
         *
         * @param description Description to set.
         * @param commentAnnotationIndex the CommentAnnotation index.
         */
	virtual void
        setCommentAnnotationDescription(std::string description, index_type commentAnnotationIndex) = 0;

	/**
         * Set the ID property of CommentAnnotation.
         *
         * @param id ID to set.
         * @param commentAnnotationIndex the CommentAnnotation index.
         */
	virtual void
        setCommentAnnotationID(std::string id, index_type commentAnnotationIndex) = 0;

	/**
         * Set the Namespace property of CommentAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param commentAnnotationIndex the CommentAnnotation index.
         */
	virtual void
        setCommentAnnotationNamespace(std::string namespace_, index_type commentAnnotationIndex) = 0;

	/**
         * Set the Value property of CommentAnnotation.
         *
         * @param value Value to set.
         * @param commentAnnotationIndex the CommentAnnotation index.
         */
	virtual void
        setCommentAnnotationValue(std::string value, index_type commentAnnotationIndex) = 0;

	/**
         * Set the AnnotationRef property of Dataset.
         *
         * @param annotation AnnotationRef to set.
         * @param datasetIndex the Dataset index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setDatasetAnnotationRef(const std::string& annotation, index_type datasetIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Description property of Dataset.
         *
         * @param description Description to set.
         * @param datasetIndex the Dataset index.
         */
	virtual void
        setDatasetDescription(std::string description, index_type datasetIndex) = 0;

	/**
         * Set the ExperimenterGroupRef property of Dataset.
         *
         * @param experimenterGroup ExperimenterGroupRef to set.
         * @param datasetIndex the Dataset index.
         */
	virtual void
        setDatasetExperimenterGroupRef(const std::string& experimenterGroup, index_type datasetIndex) = 0;

	/**
         * Set the ExperimenterRef property of Dataset.
         *
         * @param experimenter ExperimenterRef to set.
         * @param datasetIndex the Dataset index.
         */
	virtual void
        setDatasetExperimenterRef(const std::string& experimenter, index_type datasetIndex) = 0;

	/**
         * Set the ID property of Dataset.
         *
         * @param id ID to set.
         * @param datasetIndex the Dataset index.
         */
	virtual void
        setDatasetID(std::string id, index_type datasetIndex) = 0;

	/**
         * Set the ImageRef property of Dataset.
         *
         * @param image ImageRef to set.
         * @param datasetIndex the Dataset index.
         * @param imageRefIndex ImageRef index (unused).
         */
	virtual void
        setDatasetImageRef(const std::string& image, index_type datasetIndex, index_type imageRefIndex = 0) = 0;

	/**
         * Set the Name property of Dataset.
         *
         * @param name Name to set.
         * @param datasetIndex the Dataset index.
         */
	virtual void
        setDatasetName(std::string name, index_type datasetIndex) = 0;

	/**
         * Set the AmplificationGain property of Detector.
         *
         * @param amplificationGain AmplificationGain to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorAmplificationGain(double amplificationGain, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the Gain property of Detector.
         *
         * @param gain Gain to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorGain(double gain, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the ID property of Detector.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorID(std::string id, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the LotNumber property of Detector.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorLotNumber(std::string lotNumber, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the Manufacturer property of Detector.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorManufacturer(std::string manufacturer, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the Model property of Detector.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorModel(std::string model, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the Offset property of Detector.
         *
         * @param offset Offset to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorOffset(double offset, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the SerialNumber property of Detector.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorSerialNumber(std::string serialNumber, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the Type property of Detector.
         *
         * @param type Type to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorType(ome::xml::model::enums::DetectorType type, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the Voltage property of Detector.
         *
         * @param voltage Voltage to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorVoltage(double voltage, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the Zoom property of Detector.
         *
         * @param zoom Zoom to set.
         * @param instrumentIndex the Instrument index.
         * @param detectorIndex the Detector index.
         */
	virtual void
        setDetectorZoom(double zoom, index_type instrumentIndex, index_type detectorIndex) = 0;

	/**
         * Set the Binning property of DetectorSettings.
         *
         * @param binning Binning to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setDetectorSettingsBinning(ome::xml::model::enums::Binning binning, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the Gain property of DetectorSettings.
         *
         * @param gain Gain to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setDetectorSettingsGain(double gain, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the ID property of DetectorSettings.
         *
         * @param id ID to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setDetectorSettingsID(std::string id, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the Integration property of DetectorSettings.
         *
         * @param integration Integration to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setDetectorSettingsIntegration(ome::xml::model::primitives::PositiveInteger integration, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the Offset property of DetectorSettings.
         *
         * @param offset Offset to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setDetectorSettingsOffset(double offset, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the ReadOutRate property of DetectorSettings.
         *
         * @param readOutRate ReadOutRate to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setDetectorSettingsReadOutRate(double readOutRate, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the Voltage property of DetectorSettings.
         *
         * @param voltage Voltage to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setDetectorSettingsVoltage(double voltage, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the Zoom property of DetectorSettings.
         *
         * @param zoom Zoom to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setDetectorSettingsZoom(double zoom, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the ID property of Dichroic.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         * @param dichroicIndex the Dichroic index.
         */
	virtual void
        setDichroicID(std::string id, index_type instrumentIndex, index_type dichroicIndex) = 0;

	/**
         * Set the LotNumber property of Dichroic.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param dichroicIndex the Dichroic index.
         */
	virtual void
        setDichroicLotNumber(std::string lotNumber, index_type instrumentIndex, index_type dichroicIndex) = 0;

	/**
         * Set the Manufacturer property of Dichroic.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         * @param dichroicIndex the Dichroic index.
         */
	virtual void
        setDichroicManufacturer(std::string manufacturer, index_type instrumentIndex, index_type dichroicIndex) = 0;

	/**
         * Set the Model property of Dichroic.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         * @param dichroicIndex the Dichroic index.
         */
	virtual void
        setDichroicModel(std::string model, index_type instrumentIndex, index_type dichroicIndex) = 0;

	/**
         * Set the SerialNumber property of Dichroic.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param dichroicIndex the Dichroic index.
         */
	virtual void
        setDichroicSerialNumber(std::string serialNumber, index_type instrumentIndex, index_type dichroicIndex) = 0;

	/**
         * Set the AnnotationRef property of DoubleAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param doubleAnnotationIndex the DoubleAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setDoubleAnnotationAnnotationRef(const std::string& annotation, index_type doubleAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of DoubleAnnotation.
         *
         * @param annotator Annotator to set.
         * @param doubleAnnotationIndex the DoubleAnnotation index.
         */
	virtual void
        setDoubleAnnotationAnnotator(std::string annotator, index_type doubleAnnotationIndex) = 0;

	/**
         * Set the Description property of DoubleAnnotation.
         *
         * @param description Description to set.
         * @param doubleAnnotationIndex the DoubleAnnotation index.
         */
	virtual void
        setDoubleAnnotationDescription(std::string description, index_type doubleAnnotationIndex) = 0;

	/**
         * Set the ID property of DoubleAnnotation.
         *
         * @param id ID to set.
         * @param doubleAnnotationIndex the DoubleAnnotation index.
         */
	virtual void
        setDoubleAnnotationID(std::string id, index_type doubleAnnotationIndex) = 0;

	/**
         * Set the Namespace property of DoubleAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param doubleAnnotationIndex the DoubleAnnotation index.
         */
	virtual void
        setDoubleAnnotationNamespace(std::string namespace_, index_type doubleAnnotationIndex) = 0;

	/**
         * Set the Value property of DoubleAnnotation.
         *
         * @param value Value to set.
         * @param doubleAnnotationIndex the DoubleAnnotation index.
         */
	virtual void
        setDoubleAnnotationValue(double value, index_type doubleAnnotationIndex) = 0;

	/**
         * Set the FillColor property of Ellipse.
         *
         * @param fillColor FillColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseFillColor(ome::xml::model::primitives::Color fillColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillRule property of Ellipse.
         *
         * @param fillRule FillRule to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseFillRule(ome::xml::model::enums::FillRule fillRule, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontFamily property of Ellipse.
         *
         * @param fontFamily FontFamily to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseFontFamily(ome::xml::model::enums::FontFamily fontFamily, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontSize property of Ellipse.
         *
         * @param fontSize FontSize to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseFontSize(ome::xml::model::primitives::NonNegativeInteger fontSize, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontStyle property of Ellipse.
         *
         * @param fontStyle FontStyle to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseFontStyle(ome::xml::model::enums::FontStyle fontStyle, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the ID property of Ellipse.
         *
         * @param id ID to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseID(std::string id, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the LineCap property of Ellipse.
         *
         * @param lineCap LineCap to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseLineCap(ome::xml::model::enums::LineCap lineCap, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Locked property of Ellipse.
         *
         * @param locked Locked to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseLocked(bool locked, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeColor property of Ellipse.
         *
         * @param strokeColor StrokeColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseStrokeColor(ome::xml::model::primitives::Color strokeColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeDashArray property of Ellipse.
         *
         * @param strokeDashArray StrokeDashArray to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseStrokeDashArray(std::string strokeDashArray, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeWidth property of Ellipse.
         *
         * @param strokeWidth StrokeWidth to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseStrokeWidth(double strokeWidth, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Text property of Ellipse.
         *
         * @param text Text to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseText(std::string text, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheC property of Ellipse.
         *
         * @param theC TheC to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseTheC(ome::xml::model::primitives::NonNegativeInteger theC, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheT property of Ellipse.
         *
         * @param theT TheT to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseTheT(ome::xml::model::primitives::NonNegativeInteger theT, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheZ property of Ellipse.
         *
         * @param theZ TheZ to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseTheZ(ome::xml::model::primitives::NonNegativeInteger theZ, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Transform property of Ellipse.
         *
         * @param transform Transform to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseTransform(const ::ome::xml::model::AffineTransform& transform, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Visible property of Ellipse.
         *
         * @param visible Visible to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseVisible(bool visible, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the RadiusX property of Ellipse.
         *
         * @param radiusX RadiusX to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseRadiusX(double radiusX, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the RadiusY property of Ellipse.
         *
         * @param radiusY RadiusY to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseRadiusY(double radiusY, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the X property of Ellipse.
         *
         * @param x X to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseX(double x, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Y property of Ellipse.
         *
         * @param y Y to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setEllipseY(double y, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Description property of Experiment.
         *
         * @param description Description to set.
         * @param experimentIndex the Experiment index.
         */
	virtual void
        setExperimentDescription(std::string description, index_type experimentIndex) = 0;

	/**
         * Set the ExperimenterRef property of Experiment.
         *
         * @param experimenter ExperimenterRef to set.
         * @param experimentIndex the Experiment index.
         */
	virtual void
        setExperimentExperimenterRef(const std::string& experimenter, index_type experimentIndex) = 0;

	/**
         * Set the ID property of Experiment.
         *
         * @param id ID to set.
         * @param experimentIndex the Experiment index.
         */
	virtual void
        setExperimentID(std::string id, index_type experimentIndex) = 0;

	/**
         * Set the Type property of Experiment.
         *
         * @param type Type to set.
         * @param experimentIndex the Experiment index.
         */
	virtual void
        setExperimentType(ome::xml::model::enums::ExperimentType type, index_type experimentIndex) = 0;

	/**
         * Set the AnnotationRef property of Experimenter.
         *
         * @param annotation AnnotationRef to set.
         * @param experimenterIndex the Experimenter index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setExperimenterAnnotationRef(const std::string& annotation, index_type experimenterIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Email property of Experimenter.
         *
         * @param email Email to set.
         * @param experimenterIndex the Experimenter index.
         */
	virtual void
        setExperimenterEmail(std::string email, index_type experimenterIndex) = 0;

	/**
         * Set the FirstName property of Experimenter.
         *
         * @param firstName FirstName to set.
         * @param experimenterIndex the Experimenter index.
         */
	virtual void
        setExperimenterFirstName(std::string firstName, index_type experimenterIndex) = 0;

	/**
         * Set the ID property of Experimenter.
         *
         * @param id ID to set.
         * @param experimenterIndex the Experimenter index.
         */
	virtual void
        setExperimenterID(std::string id, index_type experimenterIndex) = 0;

	/**
         * Set the Institution property of Experimenter.
         *
         * @param institution Institution to set.
         * @param experimenterIndex the Experimenter index.
         */
	virtual void
        setExperimenterInstitution(std::string institution, index_type experimenterIndex) = 0;

	/**
         * Set the LastName property of Experimenter.
         *
         * @param lastName LastName to set.
         * @param experimenterIndex the Experimenter index.
         */
	virtual void
        setExperimenterLastName(std::string lastName, index_type experimenterIndex) = 0;

	/**
         * Set the MiddleName property of Experimenter.
         *
         * @param middleName MiddleName to set.
         * @param experimenterIndex the Experimenter index.
         */
	virtual void
        setExperimenterMiddleName(std::string middleName, index_type experimenterIndex) = 0;

	/**
         * Set the UserName property of Experimenter.
         *
         * @param userName UserName to set.
         * @param experimenterIndex the Experimenter index.
         */
	virtual void
        setExperimenterUserName(std::string userName, index_type experimenterIndex) = 0;

	/**
         * Set the AnnotationRef property of ExperimenterGroup.
         *
         * @param annotation AnnotationRef to set.
         * @param experimenterGroupIndex the ExperimenterGroup index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setExperimenterGroupAnnotationRef(const std::string& annotation, index_type experimenterGroupIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Description property of ExperimenterGroup.
         *
         * @param description Description to set.
         * @param experimenterGroupIndex the ExperimenterGroup index.
         */
	virtual void
        setExperimenterGroupDescription(std::string description, index_type experimenterGroupIndex) = 0;

	/**
         * Set the ExperimenterRef property of ExperimenterGroup.
         *
         * @param experimenter ExperimenterRef to set.
         * @param experimenterGroupIndex the ExperimenterGroup index.
         * @param experimenterRefIndex ExperimenterRef index (unused).
         */
	virtual void
        setExperimenterGroupExperimenterRef(const std::string& experimenter, index_type experimenterGroupIndex, index_type experimenterRefIndex = 0) = 0;

	/**
         * Set the ID property of ExperimenterGroup.
         *
         * @param id ID to set.
         * @param experimenterGroupIndex the ExperimenterGroup index.
         */
	virtual void
        setExperimenterGroupID(std::string id, index_type experimenterGroupIndex) = 0;

	/**
         * Set the Leader property of ExperimenterGroup.
         *
         * @param leader Leader to set.
         * @param experimenterGroupIndex the ExperimenterGroup index.
         * @param leaderIndex Leader index (unused).
         */
	virtual void
        setExperimenterGroupLeader(const std::string& leader, index_type experimenterGroupIndex, index_type leaderIndex = 0) = 0;

	/**
         * Set the Name property of ExperimenterGroup.
         *
         * @param name Name to set.
         * @param experimenterGroupIndex the ExperimenterGroup index.
         */
	virtual void
        setExperimenterGroupName(std::string name, index_type experimenterGroupIndex) = 0;

	/**
         * Set the ID property of Filament.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setFilamentID(std::string id, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the LotNumber property of Filament.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setFilamentLotNumber(std::string lotNumber, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Manufacturer property of Filament.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setFilamentManufacturer(std::string manufacturer, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Model property of Filament.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setFilamentModel(std::string model, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Power property of Filament.
         *
         * @param power Power to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setFilamentPower(double power, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the SerialNumber property of Filament.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setFilamentSerialNumber(std::string serialNumber, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Type property of Filament.
         *
         * @param type Type to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setFilamentType(ome::xml::model::enums::FilamentType type, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the AnnotationRef property of FileAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param fileAnnotationIndex the FileAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setFileAnnotationAnnotationRef(const std::string& annotation, index_type fileAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of FileAnnotation.
         *
         * @param annotator Annotator to set.
         * @param fileAnnotationIndex the FileAnnotation index.
         */
	virtual void
        setFileAnnotationAnnotator(std::string annotator, index_type fileAnnotationIndex) = 0;

	/**
         * Set the Description property of FileAnnotation.
         *
         * @param description Description to set.
         * @param fileAnnotationIndex the FileAnnotation index.
         */
	virtual void
        setFileAnnotationDescription(std::string description, index_type fileAnnotationIndex) = 0;

	/**
         * Set the ID property of FileAnnotation.
         *
         * @param id ID to set.
         * @param fileAnnotationIndex the FileAnnotation index.
         */
	virtual void
        setFileAnnotationID(std::string id, index_type fileAnnotationIndex) = 0;

	/**
         * Set the Namespace property of FileAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param fileAnnotationIndex the FileAnnotation index.
         */
	virtual void
        setFileAnnotationNamespace(std::string namespace_, index_type fileAnnotationIndex) = 0;

	/**
         * Set the FilterWheel property of Filter.
         *
         * @param filterWheel FilterWheel to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setFilterFilterWheel(std::string filterWheel, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the ID property of Filter.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setFilterID(std::string id, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the LotNumber property of Filter.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setFilterLotNumber(std::string lotNumber, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the Manufacturer property of Filter.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setFilterManufacturer(std::string manufacturer, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the Model property of Filter.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setFilterModel(std::string model, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the SerialNumber property of Filter.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setFilterSerialNumber(std::string serialNumber, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the Type property of Filter.
         *
         * @param type Type to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setFilterType(ome::xml::model::enums::FilterType type, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the DichroicRef property of FilterSet.
         *
         * @param dichroic DichroicRef to set.
         * @param instrumentIndex the Instrument index.
         * @param filterSetIndex the FilterSet index.
         */
	virtual void
        setFilterSetDichroicRef(const std::string& dichroic, index_type instrumentIndex, index_type filterSetIndex) = 0;

	/**
         * Set the EmissionFilterRef property of FilterSet.
         *
         * @param emissionFilter EmissionFilterRef to set.
         * @param instrumentIndex the Instrument index.
         * @param filterSetIndex the FilterSet index.
         * @param emissionFilterRefIndex EmissionFilterRef index (unused).
         */
	virtual void
        setFilterSetEmissionFilterRef(const std::string& emissionFilter, index_type instrumentIndex, index_type filterSetIndex, index_type emissionFilterRefIndex = 0) = 0;

	/**
         * Set the ExcitationFilterRef property of FilterSet.
         *
         * @param excitationFilter ExcitationFilterRef to set.
         * @param instrumentIndex the Instrument index.
         * @param filterSetIndex the FilterSet index.
         * @param excitationFilterRefIndex ExcitationFilterRef index (unused).
         */
	virtual void
        setFilterSetExcitationFilterRef(const std::string& excitationFilter, index_type instrumentIndex, index_type filterSetIndex, index_type excitationFilterRefIndex = 0) = 0;

	/**
         * Set the ID property of FilterSet.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         * @param filterSetIndex the FilterSet index.
         */
	virtual void
        setFilterSetID(std::string id, index_type instrumentIndex, index_type filterSetIndex) = 0;

	/**
         * Set the LotNumber property of FilterSet.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param filterSetIndex the FilterSet index.
         */
	virtual void
        setFilterSetLotNumber(std::string lotNumber, index_type instrumentIndex, index_type filterSetIndex) = 0;

	/**
         * Set the Manufacturer property of FilterSet.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         * @param filterSetIndex the FilterSet index.
         */
	virtual void
        setFilterSetManufacturer(std::string manufacturer, index_type instrumentIndex, index_type filterSetIndex) = 0;

	/**
         * Set the Model property of FilterSet.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         * @param filterSetIndex the FilterSet index.
         */
	virtual void
        setFilterSetModel(std::string model, index_type instrumentIndex, index_type filterSetIndex) = 0;

	/**
         * Set the SerialNumber property of FilterSet.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param filterSetIndex the FilterSet index.
         */
	virtual void
        setFilterSetSerialNumber(std::string serialNumber, index_type instrumentIndex, index_type filterSetIndex) = 0;

	/**
         * Set the AcquisitionDate property of Image.
         *
         * @param acquisitionDate AcquisitionDate to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImageAcquisitionDate(ome::xml::model::primitives::Timestamp acquisitionDate, index_type imageIndex) = 0;

	/**
         * Set the AnnotationRef property of Image.
         *
         * @param annotation AnnotationRef to set.
         * @param imageIndex the Image index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setImageAnnotationRef(const std::string& annotation, index_type imageIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Description property of Image.
         *
         * @param description Description to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImageDescription(std::string description, index_type imageIndex) = 0;

	/**
         * Set the ExperimentRef property of Image.
         *
         * @param experiment ExperimentRef to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImageExperimentRef(const std::string& experiment, index_type imageIndex) = 0;

	/**
         * Set the ExperimenterGroupRef property of Image.
         *
         * @param experimenterGroup ExperimenterGroupRef to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImageExperimenterGroupRef(const std::string& experimenterGroup, index_type imageIndex) = 0;

	/**
         * Set the ExperimenterRef property of Image.
         *
         * @param experimenter ExperimenterRef to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImageExperimenterRef(const std::string& experimenter, index_type imageIndex) = 0;

	/**
         * Set the ID property of Image.
         *
         * @param id ID to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImageID(std::string id, index_type imageIndex) = 0;

	/**
         * Set the InstrumentRef property of Image.
         *
         * @param instrument InstrumentRef to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImageInstrumentRef(const std::string& instrument, index_type imageIndex) = 0;

	/**
         * Set the MicrobeamManipulationRef property of Image.
         *
         * @param microbeamManipulation MicrobeamManipulationRef to set.
         * @param imageIndex the Image index.
         * @param microbeamManipulationRefIndex MicrobeamManipulationRef index (unused).
         */
	virtual void
        setImageMicrobeamManipulationRef(const std::string& microbeamManipulation, index_type imageIndex, index_type microbeamManipulationRefIndex = 0) = 0;

	/**
         * Set the Name property of Image.
         *
         * @param name Name to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImageName(std::string name, index_type imageIndex) = 0;

	/**
         * Set the ROIRef property of Image.
         *
         * @param roi ROIRef to set.
         * @param imageIndex the Image index.
         * @param ROIRefIndex ROIRef index (unused).
         */
	virtual void
        setImageROIRef(const std::string& roi, index_type imageIndex, index_type ROIRefIndex = 0) = 0;

	/**
         * Set the AirPressure property of ImagingEnvironment.
         *
         * @param airPressure AirPressure to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImagingEnvironmentAirPressure(double airPressure, index_type imageIndex) = 0;

	/**
         * Set the CO2Percent property of ImagingEnvironment.
         *
         * @param co2Percent CO2Percent to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImagingEnvironmentCO2Percent(ome::xml::model::primitives::PercentFraction co2Percent, index_type imageIndex) = 0;

	/**
         * Set the Humidity property of ImagingEnvironment.
         *
         * @param humidity Humidity to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImagingEnvironmentHumidity(ome::xml::model::primitives::PercentFraction humidity, index_type imageIndex) = 0;

	/**
         * Set the Temperature property of ImagingEnvironment.
         *
         * @param temperature Temperature to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setImagingEnvironmentTemperature(double temperature, index_type imageIndex) = 0;

	/**
         * Set the ID property of Instrument.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         */
	virtual void
        setInstrumentID(std::string id, index_type instrumentIndex) = 0;

	/**
         * Set the FillColor property of Label.
         *
         * @param fillColor FillColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelFillColor(ome::xml::model::primitives::Color fillColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillRule property of Label.
         *
         * @param fillRule FillRule to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelFillRule(ome::xml::model::enums::FillRule fillRule, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontFamily property of Label.
         *
         * @param fontFamily FontFamily to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelFontFamily(ome::xml::model::enums::FontFamily fontFamily, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontSize property of Label.
         *
         * @param fontSize FontSize to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelFontSize(ome::xml::model::primitives::NonNegativeInteger fontSize, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontStyle property of Label.
         *
         * @param fontStyle FontStyle to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelFontStyle(ome::xml::model::enums::FontStyle fontStyle, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the ID property of Label.
         *
         * @param id ID to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelID(std::string id, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the LineCap property of Label.
         *
         * @param lineCap LineCap to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelLineCap(ome::xml::model::enums::LineCap lineCap, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Locked property of Label.
         *
         * @param locked Locked to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelLocked(bool locked, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeColor property of Label.
         *
         * @param strokeColor StrokeColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelStrokeColor(ome::xml::model::primitives::Color strokeColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeDashArray property of Label.
         *
         * @param strokeDashArray StrokeDashArray to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelStrokeDashArray(std::string strokeDashArray, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeWidth property of Label.
         *
         * @param strokeWidth StrokeWidth to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelStrokeWidth(double strokeWidth, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Text property of Label.
         *
         * @param text Text to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelText(std::string text, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheC property of Label.
         *
         * @param theC TheC to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelTheC(ome::xml::model::primitives::NonNegativeInteger theC, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheT property of Label.
         *
         * @param theT TheT to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelTheT(ome::xml::model::primitives::NonNegativeInteger theT, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheZ property of Label.
         *
         * @param theZ TheZ to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelTheZ(ome::xml::model::primitives::NonNegativeInteger theZ, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Transform property of Label.
         *
         * @param transform Transform to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelTransform(const ::ome::xml::model::AffineTransform& transform, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Visible property of Label.
         *
         * @param visible Visible to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelVisible(bool visible, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the X property of Label.
         *
         * @param x X to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelX(double x, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Y property of Label.
         *
         * @param y Y to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLabelY(double y, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the ID property of Laser.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserID(std::string id, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the LotNumber property of Laser.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserLotNumber(std::string lotNumber, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Manufacturer property of Laser.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserManufacturer(std::string manufacturer, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Model property of Laser.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserModel(std::string model, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Power property of Laser.
         *
         * @param power Power to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserPower(double power, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the SerialNumber property of Laser.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserSerialNumber(std::string serialNumber, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the FrequencyMultiplication property of Laser.
         *
         * @param frequencyMultiplication FrequencyMultiplication to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserFrequencyMultiplication(ome::xml::model::primitives::PositiveInteger frequencyMultiplication, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the LaserMedium property of Laser.
         *
         * @param laserMedium LaserMedium to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserLaserMedium(ome::xml::model::enums::LaserMedium laserMedium, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the PockelCell property of Laser.
         *
         * @param pockelCell PockelCell to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserPockelCell(bool pockelCell, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Pulse property of Laser.
         *
         * @param pulse Pulse to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserPulse(ome::xml::model::enums::Pulse pulse, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Pump property of Laser.
         *
         * @param pump Pump to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserPump(const std::string& pump, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the RepetitionRate property of Laser.
         *
         * @param repetitionRate RepetitionRate to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserRepetitionRate(double repetitionRate, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Tuneable property of Laser.
         *
         * @param tuneable Tuneable to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserTuneable(bool tuneable, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Type property of Laser.
         *
         * @param type Type to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserType(ome::xml::model::enums::LaserType type, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Wavelength property of Laser.
         *
         * @param wavelength Wavelength to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLaserWavelength(ome::xml::model::primitives::PositiveInteger wavelength, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the ID property of LightEmittingDiode.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLightEmittingDiodeID(std::string id, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the LotNumber property of LightEmittingDiode.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLightEmittingDiodeLotNumber(std::string lotNumber, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Manufacturer property of LightEmittingDiode.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLightEmittingDiodeManufacturer(std::string manufacturer, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Model property of LightEmittingDiode.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLightEmittingDiodeModel(std::string model, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the Power property of LightEmittingDiode.
         *
         * @param power Power to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLightEmittingDiodePower(double power, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the SerialNumber property of LightEmittingDiode.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param lightSourceIndex the LightSource index.
         */
	virtual void
        setLightEmittingDiodeSerialNumber(std::string serialNumber, index_type instrumentIndex, index_type lightSourceIndex) = 0;

	/**
         * Set the DichroicRef property of LightPath.
         *
         * @param dichroic DichroicRef to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setLightPathDichroicRef(const std::string& dichroic, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the EmissionFilterRef property of LightPath.
         *
         * @param emissionFilter EmissionFilterRef to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         * @param emissionFilterRefIndex EmissionFilterRef index (unused).
         */
	virtual void
        setLightPathEmissionFilterRef(const std::string& emissionFilter, index_type imageIndex, index_type channelIndex, index_type emissionFilterRefIndex = 0) = 0;

	/**
         * Set the ExcitationFilterRef property of LightPath.
         *
         * @param excitationFilter ExcitationFilterRef to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         * @param excitationFilterRefIndex ExcitationFilterRef index (unused).
         */
	virtual void
        setLightPathExcitationFilterRef(const std::string& excitationFilter, index_type imageIndex, index_type channelIndex, index_type excitationFilterRefIndex = 0) = 0;

	/**
         * Set the Attenuation property of LightSourceSettings.
         *
         * @param attenuation Attenuation to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelLightSourceSettingsAttenuation(ome::xml::model::primitives::PercentFraction attenuation, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the Attenuation property of LightSourceSettings.
         *
         * @param attenuation Attenuation to set.
         * @param experimentIndex the Experiment index.
         * @param microbeamManipulationIndex the MicrobeamManipulation index.
         * @param lightSourceSettingsIndex the LightSourceSettings index.
         */
	virtual void
        setMicrobeamManipulationLightSourceSettingsAttenuation(ome::xml::model::primitives::PercentFraction attenuation, index_type experimentIndex, index_type microbeamManipulationIndex, index_type lightSourceSettingsIndex) = 0;

	/**
         * Set the ID property of LightSourceSettings.
         *
         * @param id ID to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelLightSourceSettingsID(std::string id, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the ID property of LightSourceSettings.
         *
         * @param id ID to set.
         * @param experimentIndex the Experiment index.
         * @param microbeamManipulationIndex the MicrobeamManipulation index.
         * @param lightSourceSettingsIndex the LightSourceSettings index.
         */
	virtual void
        setMicrobeamManipulationLightSourceSettingsID(std::string id, index_type experimentIndex, index_type microbeamManipulationIndex, index_type lightSourceSettingsIndex) = 0;

	/**
         * Set the Wavelength property of LightSourceSettings.
         *
         * @param wavelength Wavelength to set.
         * @param imageIndex the Image index.
         * @param channelIndex the Channel index.
         */
	virtual void
        setChannelLightSourceSettingsWavelength(ome::xml::model::primitives::PositiveInteger wavelength, index_type imageIndex, index_type channelIndex) = 0;

	/**
         * Set the Wavelength property of LightSourceSettings.
         *
         * @param wavelength Wavelength to set.
         * @param experimentIndex the Experiment index.
         * @param microbeamManipulationIndex the MicrobeamManipulation index.
         * @param lightSourceSettingsIndex the LightSourceSettings index.
         */
	virtual void
        setMicrobeamManipulationLightSourceSettingsWavelength(ome::xml::model::primitives::PositiveInteger wavelength, index_type experimentIndex, index_type microbeamManipulationIndex, index_type lightSourceSettingsIndex) = 0;

	/**
         * Set the FillColor property of Line.
         *
         * @param fillColor FillColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineFillColor(ome::xml::model::primitives::Color fillColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillRule property of Line.
         *
         * @param fillRule FillRule to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineFillRule(ome::xml::model::enums::FillRule fillRule, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontFamily property of Line.
         *
         * @param fontFamily FontFamily to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineFontFamily(ome::xml::model::enums::FontFamily fontFamily, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontSize property of Line.
         *
         * @param fontSize FontSize to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineFontSize(ome::xml::model::primitives::NonNegativeInteger fontSize, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontStyle property of Line.
         *
         * @param fontStyle FontStyle to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineFontStyle(ome::xml::model::enums::FontStyle fontStyle, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the ID property of Line.
         *
         * @param id ID to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineID(std::string id, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the LineCap property of Line.
         *
         * @param lineCap LineCap to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineLineCap(ome::xml::model::enums::LineCap lineCap, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Locked property of Line.
         *
         * @param locked Locked to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineLocked(bool locked, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeColor property of Line.
         *
         * @param strokeColor StrokeColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineStrokeColor(ome::xml::model::primitives::Color strokeColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeDashArray property of Line.
         *
         * @param strokeDashArray StrokeDashArray to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineStrokeDashArray(std::string strokeDashArray, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeWidth property of Line.
         *
         * @param strokeWidth StrokeWidth to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineStrokeWidth(double strokeWidth, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Text property of Line.
         *
         * @param text Text to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineText(std::string text, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheC property of Line.
         *
         * @param theC TheC to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineTheC(ome::xml::model::primitives::NonNegativeInteger theC, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheT property of Line.
         *
         * @param theT TheT to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineTheT(ome::xml::model::primitives::NonNegativeInteger theT, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheZ property of Line.
         *
         * @param theZ TheZ to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineTheZ(ome::xml::model::primitives::NonNegativeInteger theZ, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Transform property of Line.
         *
         * @param transform Transform to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineTransform(const ::ome::xml::model::AffineTransform& transform, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Visible property of Line.
         *
         * @param visible Visible to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineVisible(bool visible, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the MarkerEnd property of Line.
         *
         * @param markerEnd MarkerEnd to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineMarkerEnd(ome::xml::model::enums::Marker markerEnd, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the MarkerStart property of Line.
         *
         * @param markerStart MarkerStart to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineMarkerStart(ome::xml::model::enums::Marker markerStart, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the X1 property of Line.
         *
         * @param x1 X1 to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineX1(double x1, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the X2 property of Line.
         *
         * @param x2 X2 to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineX2(double x2, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Y1 property of Line.
         *
         * @param y1 Y1 to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineY1(double y1, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Y2 property of Line.
         *
         * @param y2 Y2 to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setLineY2(double y2, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the AnnotationRef property of ListAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param listAnnotationIndex the ListAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setListAnnotationAnnotationRef(const std::string& annotation, index_type listAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of ListAnnotation.
         *
         * @param annotator Annotator to set.
         * @param listAnnotationIndex the ListAnnotation index.
         */
	virtual void
        setListAnnotationAnnotator(std::string annotator, index_type listAnnotationIndex) = 0;

	/**
         * Set the Description property of ListAnnotation.
         *
         * @param description Description to set.
         * @param listAnnotationIndex the ListAnnotation index.
         */
	virtual void
        setListAnnotationDescription(std::string description, index_type listAnnotationIndex) = 0;

	/**
         * Set the ID property of ListAnnotation.
         *
         * @param id ID to set.
         * @param listAnnotationIndex the ListAnnotation index.
         */
	virtual void
        setListAnnotationID(std::string id, index_type listAnnotationIndex) = 0;

	/**
         * Set the Namespace property of ListAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param listAnnotationIndex the ListAnnotation index.
         */
	virtual void
        setListAnnotationNamespace(std::string namespace_, index_type listAnnotationIndex) = 0;

	/**
         * Set the AnnotationRef property of LongAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param longAnnotationIndex the LongAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setLongAnnotationAnnotationRef(const std::string& annotation, index_type longAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of LongAnnotation.
         *
         * @param annotator Annotator to set.
         * @param longAnnotationIndex the LongAnnotation index.
         */
	virtual void
        setLongAnnotationAnnotator(std::string annotator, index_type longAnnotationIndex) = 0;

	/**
         * Set the Description property of LongAnnotation.
         *
         * @param description Description to set.
         * @param longAnnotationIndex the LongAnnotation index.
         */
	virtual void
        setLongAnnotationDescription(std::string description, index_type longAnnotationIndex) = 0;

	/**
         * Set the ID property of LongAnnotation.
         *
         * @param id ID to set.
         * @param longAnnotationIndex the LongAnnotation index.
         */
	virtual void
        setLongAnnotationID(std::string id, index_type longAnnotationIndex) = 0;

	/**
         * Set the Namespace property of LongAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param longAnnotationIndex the LongAnnotation index.
         */
	virtual void
        setLongAnnotationNamespace(std::string namespace_, index_type longAnnotationIndex) = 0;

	/**
         * Set the Value property of LongAnnotation.
         *
         * @param value Value to set.
         * @param longAnnotationIndex the LongAnnotation index.
         */
	virtual void
        setLongAnnotationValue(int64_t value, index_type longAnnotationIndex) = 0;

	/**
         * Set the FillColor property of Mask.
         *
         * @param fillColor FillColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskFillColor(ome::xml::model::primitives::Color fillColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillRule property of Mask.
         *
         * @param fillRule FillRule to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskFillRule(ome::xml::model::enums::FillRule fillRule, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontFamily property of Mask.
         *
         * @param fontFamily FontFamily to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskFontFamily(ome::xml::model::enums::FontFamily fontFamily, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontSize property of Mask.
         *
         * @param fontSize FontSize to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskFontSize(ome::xml::model::primitives::NonNegativeInteger fontSize, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontStyle property of Mask.
         *
         * @param fontStyle FontStyle to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskFontStyle(ome::xml::model::enums::FontStyle fontStyle, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the ID property of Mask.
         *
         * @param id ID to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskID(std::string id, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the LineCap property of Mask.
         *
         * @param lineCap LineCap to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskLineCap(ome::xml::model::enums::LineCap lineCap, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Locked property of Mask.
         *
         * @param locked Locked to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskLocked(bool locked, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeColor property of Mask.
         *
         * @param strokeColor StrokeColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskStrokeColor(ome::xml::model::primitives::Color strokeColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeDashArray property of Mask.
         *
         * @param strokeDashArray StrokeDashArray to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskStrokeDashArray(std::string strokeDashArray, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeWidth property of Mask.
         *
         * @param strokeWidth StrokeWidth to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskStrokeWidth(double strokeWidth, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Text property of Mask.
         *
         * @param text Text to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskText(std::string text, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheC property of Mask.
         *
         * @param theC TheC to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskTheC(ome::xml::model::primitives::NonNegativeInteger theC, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheT property of Mask.
         *
         * @param theT TheT to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskTheT(ome::xml::model::primitives::NonNegativeInteger theT, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheZ property of Mask.
         *
         * @param theZ TheZ to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskTheZ(ome::xml::model::primitives::NonNegativeInteger theZ, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Transform property of Mask.
         *
         * @param transform Transform to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskTransform(const ::ome::xml::model::AffineTransform& transform, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Visible property of Mask.
         *
         * @param visible Visible to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskVisible(bool visible, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Height property of Mask.
         *
         * @param height Height to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskHeight(double height, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Width property of Mask.
         *
         * @param width Width to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskWidth(double width, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the X property of Mask.
         *
         * @param x X to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskX(double x, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Y property of Mask.
         *
         * @param y Y to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setMaskY(double y, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Description property of MicrobeamManipulation.
         *
         * @param description Description to set.
         * @param experimentIndex the Experiment index.
         * @param microbeamManipulationIndex the MicrobeamManipulation index.
         */
	virtual void
        setMicrobeamManipulationDescription(std::string description, index_type experimentIndex, index_type microbeamManipulationIndex) = 0;

	/**
         * Set the ExperimenterRef property of MicrobeamManipulation.
         *
         * @param experimenter ExperimenterRef to set.
         * @param experimentIndex the Experiment index.
         * @param microbeamManipulationIndex the MicrobeamManipulation index.
         */
	virtual void
        setMicrobeamManipulationExperimenterRef(const std::string& experimenter, index_type experimentIndex, index_type microbeamManipulationIndex) = 0;

	/**
         * Set the ID property of MicrobeamManipulation.
         *
         * @param id ID to set.
         * @param experimentIndex the Experiment index.
         * @param microbeamManipulationIndex the MicrobeamManipulation index.
         */
	virtual void
        setMicrobeamManipulationID(std::string id, index_type experimentIndex, index_type microbeamManipulationIndex) = 0;

	/**
         * Set the ROIRef property of MicrobeamManipulation.
         *
         * @param roi ROIRef to set.
         * @param experimentIndex the Experiment index.
         * @param microbeamManipulationIndex the MicrobeamManipulation index.
         * @param ROIRefIndex ROIRef index (unused).
         */
	virtual void
        setMicrobeamManipulationROIRef(const std::string& roi, index_type experimentIndex, index_type microbeamManipulationIndex, index_type ROIRefIndex = 0) = 0;

	/**
         * Set the Type property of MicrobeamManipulation.
         *
         * @param type Type to set.
         * @param experimentIndex the Experiment index.
         * @param microbeamManipulationIndex the MicrobeamManipulation index.
         */
	virtual void
        setMicrobeamManipulationType(ome::xml::model::enums::MicrobeamManipulationType type, index_type experimentIndex, index_type microbeamManipulationIndex) = 0;

	/**
         * Set the LotNumber property of Microscope.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         */
	virtual void
        setMicroscopeLotNumber(std::string lotNumber, index_type instrumentIndex) = 0;

	/**
         * Set the Manufacturer property of Microscope.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         */
	virtual void
        setMicroscopeManufacturer(std::string manufacturer, index_type instrumentIndex) = 0;

	/**
         * Set the Model property of Microscope.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         */
	virtual void
        setMicroscopeModel(std::string model, index_type instrumentIndex) = 0;

	/**
         * Set the SerialNumber property of Microscope.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         */
	virtual void
        setMicroscopeSerialNumber(std::string serialNumber, index_type instrumentIndex) = 0;

	/**
         * Set the Type property of Microscope.
         *
         * @param type Type to set.
         * @param instrumentIndex the Instrument index.
         */
	virtual void
        setMicroscopeType(ome::xml::model::enums::MicroscopeType type, index_type instrumentIndex) = 0;

	/**
         * Set the CalibratedMagnification property of Objective.
         *
         * @param calibratedMagnification CalibratedMagnification to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveCalibratedMagnification(double calibratedMagnification, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the Correction property of Objective.
         *
         * @param correction Correction to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveCorrection(ome::xml::model::enums::Correction correction, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the ID property of Objective.
         *
         * @param id ID to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveID(std::string id, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the Immersion property of Objective.
         *
         * @param immersion Immersion to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveImmersion(ome::xml::model::enums::Immersion immersion, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the Iris property of Objective.
         *
         * @param iris Iris to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveIris(bool iris, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the LensNA property of Objective.
         *
         * @param lensNA LensNA to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveLensNA(double lensNA, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the LotNumber property of Objective.
         *
         * @param lotNumber LotNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveLotNumber(std::string lotNumber, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the Manufacturer property of Objective.
         *
         * @param manufacturer Manufacturer to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveManufacturer(std::string manufacturer, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the Model property of Objective.
         *
         * @param model Model to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveModel(std::string model, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the NominalMagnification property of Objective.
         *
         * @param nominalMagnification NominalMagnification to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveNominalMagnification(double nominalMagnification, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the SerialNumber property of Objective.
         *
         * @param serialNumber SerialNumber to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveSerialNumber(std::string serialNumber, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the WorkingDistance property of Objective.
         *
         * @param workingDistance WorkingDistance to set.
         * @param instrumentIndex the Instrument index.
         * @param objectiveIndex the Objective index.
         */
	virtual void
        setObjectiveWorkingDistance(double workingDistance, index_type instrumentIndex, index_type objectiveIndex) = 0;

	/**
         * Set the CorrectionCollar property of ObjectiveSettings.
         *
         * @param correctionCollar CorrectionCollar to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setObjectiveSettingsCorrectionCollar(double correctionCollar, index_type imageIndex) = 0;

	/**
         * Set the ID property of ObjectiveSettings.
         *
         * @param id ID to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setObjectiveSettingsID(std::string id, index_type imageIndex) = 0;

	/**
         * Set the Medium property of ObjectiveSettings.
         *
         * @param medium Medium to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setObjectiveSettingsMedium(ome::xml::model::enums::Medium medium, index_type imageIndex) = 0;

	/**
         * Set the RefractiveIndex property of ObjectiveSettings.
         *
         * @param refractiveIndex RefractiveIndex to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setObjectiveSettingsRefractiveIndex(double refractiveIndex, index_type imageIndex) = 0;

	/**
         * Set the AnnotationRef property of Pixels.
         *
         * @param annotation AnnotationRef to set.
         * @param imageIndex the Image index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setPixelsAnnotationRef(const std::string& annotation, index_type imageIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the BigEndian property of Pixels.
         *
         * @param bigEndian BigEndian to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsBigEndian(bool bigEndian, index_type imageIndex) = 0;

	/**
         * Set the DimensionOrder property of Pixels.
         *
         * @param dimensionOrder DimensionOrder to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsDimensionOrder(ome::xml::model::enums::DimensionOrder dimensionOrder, index_type imageIndex) = 0;

	/**
         * Set the ID property of Pixels.
         *
         * @param id ID to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsID(std::string id, index_type imageIndex) = 0;

	/**
         * Set the Interleaved property of Pixels.
         *
         * @param interleaved Interleaved to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsInterleaved(bool interleaved, index_type imageIndex) = 0;

	/**
         * Set the PhysicalSizeX property of Pixels.
         *
         * @param physicalSizeX PhysicalSizeX to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsPhysicalSizeX(ome::xml::model::primitives::PositiveFloat physicalSizeX, index_type imageIndex) = 0;

	/**
         * Set the PhysicalSizeY property of Pixels.
         *
         * @param physicalSizeY PhysicalSizeY to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsPhysicalSizeY(ome::xml::model::primitives::PositiveFloat physicalSizeY, index_type imageIndex) = 0;

	/**
         * Set the PhysicalSizeZ property of Pixels.
         *
         * @param physicalSizeZ PhysicalSizeZ to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsPhysicalSizeZ(ome::xml::model::primitives::PositiveFloat physicalSizeZ, index_type imageIndex) = 0;

	/**
         * Set the SignificantBits property of Pixels.
         *
         * @param significantBits SignificantBits to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsSignificantBits(ome::xml::model::primitives::PositiveInteger significantBits, index_type imageIndex) = 0;

	/**
         * Set the SizeC property of Pixels.
         *
         * @param sizeC SizeC to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsSizeC(ome::xml::model::primitives::PositiveInteger sizeC, index_type imageIndex) = 0;

	/**
         * Set the SizeT property of Pixels.
         *
         * @param sizeT SizeT to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsSizeT(ome::xml::model::primitives::PositiveInteger sizeT, index_type imageIndex) = 0;

	/**
         * Set the SizeX property of Pixels.
         *
         * @param sizeX SizeX to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsSizeX(ome::xml::model::primitives::PositiveInteger sizeX, index_type imageIndex) = 0;

	/**
         * Set the SizeY property of Pixels.
         *
         * @param sizeY SizeY to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsSizeY(ome::xml::model::primitives::PositiveInteger sizeY, index_type imageIndex) = 0;

	/**
         * Set the SizeZ property of Pixels.
         *
         * @param sizeZ SizeZ to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsSizeZ(ome::xml::model::primitives::PositiveInteger sizeZ, index_type imageIndex) = 0;

	/**
         * Set the TimeIncrement property of Pixels.
         *
         * @param timeIncrement TimeIncrement to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsTimeIncrement(double timeIncrement, index_type imageIndex) = 0;

	/**
         * Set the Type property of Pixels.
         *
         * @param type Type to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setPixelsType(ome::xml::model::enums::PixelType type, index_type imageIndex) = 0;

	/**
         * Set the AnnotationRef property of Plane.
         *
         * @param annotation AnnotationRef to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setPlaneAnnotationRef(const std::string& annotation, index_type imageIndex, index_type planeIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the DeltaT property of Plane.
         *
         * @param deltaT DeltaT to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         */
	virtual void
        setPlaneDeltaT(double deltaT, index_type imageIndex, index_type planeIndex) = 0;

	/**
         * Set the ExposureTime property of Plane.
         *
         * @param exposureTime ExposureTime to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         */
	virtual void
        setPlaneExposureTime(double exposureTime, index_type imageIndex, index_type planeIndex) = 0;

	/**
         * Set the HashSHA1 property of Plane.
         *
         * @param hashSHA1 HashSHA1 to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         */
	virtual void
        setPlaneHashSHA1(std::string hashSHA1, index_type imageIndex, index_type planeIndex) = 0;

	/**
         * Set the PositionX property of Plane.
         *
         * @param positionX PositionX to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         */
	virtual void
        setPlanePositionX(double positionX, index_type imageIndex, index_type planeIndex) = 0;

	/**
         * Set the PositionY property of Plane.
         *
         * @param positionY PositionY to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         */
	virtual void
        setPlanePositionY(double positionY, index_type imageIndex, index_type planeIndex) = 0;

	/**
         * Set the PositionZ property of Plane.
         *
         * @param positionZ PositionZ to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         */
	virtual void
        setPlanePositionZ(double positionZ, index_type imageIndex, index_type planeIndex) = 0;

	/**
         * Set the TheC property of Plane.
         *
         * @param theC TheC to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         */
	virtual void
        setPlaneTheC(ome::xml::model::primitives::NonNegativeInteger theC, index_type imageIndex, index_type planeIndex) = 0;

	/**
         * Set the TheT property of Plane.
         *
         * @param theT TheT to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         */
	virtual void
        setPlaneTheT(ome::xml::model::primitives::NonNegativeInteger theT, index_type imageIndex, index_type planeIndex) = 0;

	/**
         * Set the TheZ property of Plane.
         *
         * @param theZ TheZ to set.
         * @param imageIndex the Image index.
         * @param planeIndex the Plane index.
         */
	virtual void
        setPlaneTheZ(ome::xml::model::primitives::NonNegativeInteger theZ, index_type imageIndex, index_type planeIndex) = 0;

	/**
         * Set the AnnotationRef property of Plate.
         *
         * @param annotation AnnotationRef to set.
         * @param plateIndex the Plate index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setPlateAnnotationRef(const std::string& annotation, index_type plateIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the ColumnNamingConvention property of Plate.
         *
         * @param columnNamingConvention ColumnNamingConvention to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateColumnNamingConvention(ome::xml::model::enums::NamingConvention columnNamingConvention, index_type plateIndex) = 0;

	/**
         * Set the Columns property of Plate.
         *
         * @param columns Columns to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateColumns(ome::xml::model::primitives::PositiveInteger columns, index_type plateIndex) = 0;

	/**
         * Set the Description property of Plate.
         *
         * @param description Description to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateDescription(std::string description, index_type plateIndex) = 0;

	/**
         * Set the ExternalIdentifier property of Plate.
         *
         * @param externalIdentifier ExternalIdentifier to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateExternalIdentifier(std::string externalIdentifier, index_type plateIndex) = 0;

	/**
         * Set the FieldIndex property of Plate.
         *
         * @param fieldIndex FieldIndex to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateFieldIndex(ome::xml::model::primitives::NonNegativeInteger fieldIndex, index_type plateIndex) = 0;

	/**
         * Set the ID property of Plate.
         *
         * @param id ID to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateID(std::string id, index_type plateIndex) = 0;

	/**
         * Set the Name property of Plate.
         *
         * @param name Name to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateName(std::string name, index_type plateIndex) = 0;

	/**
         * Set the RowNamingConvention property of Plate.
         *
         * @param rowNamingConvention RowNamingConvention to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateRowNamingConvention(ome::xml::model::enums::NamingConvention rowNamingConvention, index_type plateIndex) = 0;

	/**
         * Set the Rows property of Plate.
         *
         * @param rows Rows to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateRows(ome::xml::model::primitives::PositiveInteger rows, index_type plateIndex) = 0;

	/**
         * Set the Status property of Plate.
         *
         * @param status Status to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateStatus(std::string status, index_type plateIndex) = 0;

	/**
         * Set the WellOriginX property of Plate.
         *
         * @param wellOriginX WellOriginX to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateWellOriginX(double wellOriginX, index_type plateIndex) = 0;

	/**
         * Set the WellOriginY property of Plate.
         *
         * @param wellOriginY WellOriginY to set.
         * @param plateIndex the Plate index.
         */
	virtual void
        setPlateWellOriginY(double wellOriginY, index_type plateIndex) = 0;

	/**
         * Set the AnnotationRef property of PlateAcquisition.
         *
         * @param annotation AnnotationRef to set.
         * @param plateIndex the Plate index.
         * @param plateAcquisitionIndex the PlateAcquisition index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setPlateAcquisitionAnnotationRef(const std::string& annotation, index_type plateIndex, index_type plateAcquisitionIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Description property of PlateAcquisition.
         *
         * @param description Description to set.
         * @param plateIndex the Plate index.
         * @param plateAcquisitionIndex the PlateAcquisition index.
         */
	virtual void
        setPlateAcquisitionDescription(std::string description, index_type plateIndex, index_type plateAcquisitionIndex) = 0;

	/**
         * Set the EndTime property of PlateAcquisition.
         *
         * @param endTime EndTime to set.
         * @param plateIndex the Plate index.
         * @param plateAcquisitionIndex the PlateAcquisition index.
         */
	virtual void
        setPlateAcquisitionEndTime(ome::xml::model::primitives::Timestamp endTime, index_type plateIndex, index_type plateAcquisitionIndex) = 0;

	/**
         * Set the ID property of PlateAcquisition.
         *
         * @param id ID to set.
         * @param plateIndex the Plate index.
         * @param plateAcquisitionIndex the PlateAcquisition index.
         */
	virtual void
        setPlateAcquisitionID(std::string id, index_type plateIndex, index_type plateAcquisitionIndex) = 0;

	/**
         * Set the MaximumFieldCount property of PlateAcquisition.
         *
         * @param maximumFieldCount MaximumFieldCount to set.
         * @param plateIndex the Plate index.
         * @param plateAcquisitionIndex the PlateAcquisition index.
         */
	virtual void
        setPlateAcquisitionMaximumFieldCount(ome::xml::model::primitives::PositiveInteger maximumFieldCount, index_type plateIndex, index_type plateAcquisitionIndex) = 0;

	/**
         * Set the Name property of PlateAcquisition.
         *
         * @param name Name to set.
         * @param plateIndex the Plate index.
         * @param plateAcquisitionIndex the PlateAcquisition index.
         */
	virtual void
        setPlateAcquisitionName(std::string name, index_type plateIndex, index_type plateAcquisitionIndex) = 0;

	/**
         * Set the StartTime property of PlateAcquisition.
         *
         * @param startTime StartTime to set.
         * @param plateIndex the Plate index.
         * @param plateAcquisitionIndex the PlateAcquisition index.
         */
	virtual void
        setPlateAcquisitionStartTime(ome::xml::model::primitives::Timestamp startTime, index_type plateIndex, index_type plateAcquisitionIndex) = 0;

	/**
         * Set the WellSampleRef property of PlateAcquisition.
         *
         * @param wellSample WellSampleRef to set.
         * @param plateIndex the Plate index.
         * @param plateAcquisitionIndex the PlateAcquisition index.
         * @param wellSampleRefIndex WellSampleRef index (unused).
         */
	virtual void
        setPlateAcquisitionWellSampleRef(const std::string& wellSample, index_type plateIndex, index_type plateAcquisitionIndex, index_type wellSampleRefIndex = 0) = 0;

	/**
         * Set the FillColor property of Point.
         *
         * @param fillColor FillColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointFillColor(ome::xml::model::primitives::Color fillColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillRule property of Point.
         *
         * @param fillRule FillRule to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointFillRule(ome::xml::model::enums::FillRule fillRule, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontFamily property of Point.
         *
         * @param fontFamily FontFamily to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointFontFamily(ome::xml::model::enums::FontFamily fontFamily, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontSize property of Point.
         *
         * @param fontSize FontSize to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointFontSize(ome::xml::model::primitives::NonNegativeInteger fontSize, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontStyle property of Point.
         *
         * @param fontStyle FontStyle to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointFontStyle(ome::xml::model::enums::FontStyle fontStyle, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the ID property of Point.
         *
         * @param id ID to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointID(std::string id, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the LineCap property of Point.
         *
         * @param lineCap LineCap to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointLineCap(ome::xml::model::enums::LineCap lineCap, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Locked property of Point.
         *
         * @param locked Locked to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointLocked(bool locked, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeColor property of Point.
         *
         * @param strokeColor StrokeColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointStrokeColor(ome::xml::model::primitives::Color strokeColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeDashArray property of Point.
         *
         * @param strokeDashArray StrokeDashArray to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointStrokeDashArray(std::string strokeDashArray, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeWidth property of Point.
         *
         * @param strokeWidth StrokeWidth to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointStrokeWidth(double strokeWidth, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Text property of Point.
         *
         * @param text Text to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointText(std::string text, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheC property of Point.
         *
         * @param theC TheC to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointTheC(ome::xml::model::primitives::NonNegativeInteger theC, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheT property of Point.
         *
         * @param theT TheT to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointTheT(ome::xml::model::primitives::NonNegativeInteger theT, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheZ property of Point.
         *
         * @param theZ TheZ to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointTheZ(ome::xml::model::primitives::NonNegativeInteger theZ, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Transform property of Point.
         *
         * @param transform Transform to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointTransform(const ::ome::xml::model::AffineTransform& transform, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Visible property of Point.
         *
         * @param visible Visible to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointVisible(bool visible, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the X property of Point.
         *
         * @param x X to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointX(double x, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Y property of Point.
         *
         * @param y Y to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPointY(double y, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillColor property of Polygon.
         *
         * @param fillColor FillColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonFillColor(ome::xml::model::primitives::Color fillColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillRule property of Polygon.
         *
         * @param fillRule FillRule to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonFillRule(ome::xml::model::enums::FillRule fillRule, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontFamily property of Polygon.
         *
         * @param fontFamily FontFamily to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonFontFamily(ome::xml::model::enums::FontFamily fontFamily, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontSize property of Polygon.
         *
         * @param fontSize FontSize to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonFontSize(ome::xml::model::primitives::NonNegativeInteger fontSize, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontStyle property of Polygon.
         *
         * @param fontStyle FontStyle to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonFontStyle(ome::xml::model::enums::FontStyle fontStyle, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the ID property of Polygon.
         *
         * @param id ID to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonID(std::string id, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the LineCap property of Polygon.
         *
         * @param lineCap LineCap to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonLineCap(ome::xml::model::enums::LineCap lineCap, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Locked property of Polygon.
         *
         * @param locked Locked to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonLocked(bool locked, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeColor property of Polygon.
         *
         * @param strokeColor StrokeColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonStrokeColor(ome::xml::model::primitives::Color strokeColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeDashArray property of Polygon.
         *
         * @param strokeDashArray StrokeDashArray to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonStrokeDashArray(std::string strokeDashArray, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeWidth property of Polygon.
         *
         * @param strokeWidth StrokeWidth to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonStrokeWidth(double strokeWidth, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Text property of Polygon.
         *
         * @param text Text to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonText(std::string text, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheC property of Polygon.
         *
         * @param theC TheC to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonTheC(ome::xml::model::primitives::NonNegativeInteger theC, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheT property of Polygon.
         *
         * @param theT TheT to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonTheT(ome::xml::model::primitives::NonNegativeInteger theT, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheZ property of Polygon.
         *
         * @param theZ TheZ to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonTheZ(ome::xml::model::primitives::NonNegativeInteger theZ, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Transform property of Polygon.
         *
         * @param transform Transform to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonTransform(const ::ome::xml::model::AffineTransform& transform, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Visible property of Polygon.
         *
         * @param visible Visible to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonVisible(bool visible, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Points property of Polygon.
         *
         * @param points Points to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolygonPoints(std::string points, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillColor property of Polyline.
         *
         * @param fillColor FillColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineFillColor(ome::xml::model::primitives::Color fillColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillRule property of Polyline.
         *
         * @param fillRule FillRule to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineFillRule(ome::xml::model::enums::FillRule fillRule, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontFamily property of Polyline.
         *
         * @param fontFamily FontFamily to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineFontFamily(ome::xml::model::enums::FontFamily fontFamily, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontSize property of Polyline.
         *
         * @param fontSize FontSize to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineFontSize(ome::xml::model::primitives::NonNegativeInteger fontSize, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontStyle property of Polyline.
         *
         * @param fontStyle FontStyle to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineFontStyle(ome::xml::model::enums::FontStyle fontStyle, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the ID property of Polyline.
         *
         * @param id ID to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineID(std::string id, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the LineCap property of Polyline.
         *
         * @param lineCap LineCap to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineLineCap(ome::xml::model::enums::LineCap lineCap, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Locked property of Polyline.
         *
         * @param locked Locked to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineLocked(bool locked, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeColor property of Polyline.
         *
         * @param strokeColor StrokeColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineStrokeColor(ome::xml::model::primitives::Color strokeColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeDashArray property of Polyline.
         *
         * @param strokeDashArray StrokeDashArray to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineStrokeDashArray(std::string strokeDashArray, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeWidth property of Polyline.
         *
         * @param strokeWidth StrokeWidth to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineStrokeWidth(double strokeWidth, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Text property of Polyline.
         *
         * @param text Text to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineText(std::string text, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheC property of Polyline.
         *
         * @param theC TheC to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineTheC(ome::xml::model::primitives::NonNegativeInteger theC, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheT property of Polyline.
         *
         * @param theT TheT to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineTheT(ome::xml::model::primitives::NonNegativeInteger theT, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheZ property of Polyline.
         *
         * @param theZ TheZ to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineTheZ(ome::xml::model::primitives::NonNegativeInteger theZ, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Transform property of Polyline.
         *
         * @param transform Transform to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineTransform(const ::ome::xml::model::AffineTransform& transform, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Visible property of Polyline.
         *
         * @param visible Visible to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineVisible(bool visible, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the MarkerEnd property of Polyline.
         *
         * @param markerEnd MarkerEnd to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineMarkerEnd(ome::xml::model::enums::Marker markerEnd, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the MarkerStart property of Polyline.
         *
         * @param markerStart MarkerStart to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylineMarkerStart(ome::xml::model::enums::Marker markerStart, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Points property of Polyline.
         *
         * @param points Points to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setPolylinePoints(std::string points, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the AnnotationRef property of Project.
         *
         * @param annotation AnnotationRef to set.
         * @param projectIndex the Project index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setProjectAnnotationRef(const std::string& annotation, index_type projectIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the DatasetRef property of Project.
         *
         * @param dataset DatasetRef to set.
         * @param projectIndex the Project index.
         * @param datasetRefIndex DatasetRef index (unused).
         */
	virtual void
        setProjectDatasetRef(const std::string& dataset, index_type projectIndex, index_type datasetRefIndex = 0) = 0;

	/**
         * Set the Description property of Project.
         *
         * @param description Description to set.
         * @param projectIndex the Project index.
         */
	virtual void
        setProjectDescription(std::string description, index_type projectIndex) = 0;

	/**
         * Set the ExperimenterGroupRef property of Project.
         *
         * @param experimenterGroup ExperimenterGroupRef to set.
         * @param projectIndex the Project index.
         */
	virtual void
        setProjectExperimenterGroupRef(const std::string& experimenterGroup, index_type projectIndex) = 0;

	/**
         * Set the ExperimenterRef property of Project.
         *
         * @param experimenter ExperimenterRef to set.
         * @param projectIndex the Project index.
         */
	virtual void
        setProjectExperimenterRef(const std::string& experimenter, index_type projectIndex) = 0;

	/**
         * Set the ID property of Project.
         *
         * @param id ID to set.
         * @param projectIndex the Project index.
         */
	virtual void
        setProjectID(std::string id, index_type projectIndex) = 0;

	/**
         * Set the Name property of Project.
         *
         * @param name Name to set.
         * @param projectIndex the Project index.
         */
	virtual void
        setProjectName(std::string name, index_type projectIndex) = 0;

	/**
         * Set the AnnotationRef property of ROI.
         *
         * @param annotation AnnotationRef to set.
         * @param ROIIndex the ROI index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setROIAnnotationRef(const std::string& annotation, index_type ROIIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Description property of ROI.
         *
         * @param description Description to set.
         * @param ROIIndex the ROI index.
         */
	virtual void
        setROIDescription(std::string description, index_type ROIIndex) = 0;

	/**
         * Set the ID property of ROI.
         *
         * @param id ID to set.
         * @param ROIIndex the ROI index.
         */
	virtual void
        setROIID(std::string id, index_type ROIIndex) = 0;

	/**
         * Set the Name property of ROI.
         *
         * @param name Name to set.
         * @param ROIIndex the ROI index.
         */
	virtual void
        setROIName(std::string name, index_type ROIIndex) = 0;

	/**
         * Set the Namespace property of ROI.
         *
         * @param namespace_ Namespace to set.
         * @param ROIIndex the ROI index.
         */
	virtual void
        setROINamespace(std::string namespace_, index_type ROIIndex) = 0;

	/**
         * Set the AnnotationRef property of Reagent.
         *
         * @param annotation AnnotationRef to set.
         * @param screenIndex the Screen index.
         * @param reagentIndex the Reagent index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setReagentAnnotationRef(const std::string& annotation, index_type screenIndex, index_type reagentIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Description property of Reagent.
         *
         * @param description Description to set.
         * @param screenIndex the Screen index.
         * @param reagentIndex the Reagent index.
         */
	virtual void
        setReagentDescription(std::string description, index_type screenIndex, index_type reagentIndex) = 0;

	/**
         * Set the ID property of Reagent.
         *
         * @param id ID to set.
         * @param screenIndex the Screen index.
         * @param reagentIndex the Reagent index.
         */
	virtual void
        setReagentID(std::string id, index_type screenIndex, index_type reagentIndex) = 0;

	/**
         * Set the Name property of Reagent.
         *
         * @param name Name to set.
         * @param screenIndex the Screen index.
         * @param reagentIndex the Reagent index.
         */
	virtual void
        setReagentName(std::string name, index_type screenIndex, index_type reagentIndex) = 0;

	/**
         * Set the ReagentIdentifier property of Reagent.
         *
         * @param reagentIdentifier ReagentIdentifier to set.
         * @param screenIndex the Screen index.
         * @param reagentIndex the Reagent index.
         */
	virtual void
        setReagentReagentIdentifier(std::string reagentIdentifier, index_type screenIndex, index_type reagentIndex) = 0;

	/**
         * Set the FillColor property of Rectangle.
         *
         * @param fillColor FillColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleFillColor(ome::xml::model::primitives::Color fillColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FillRule property of Rectangle.
         *
         * @param fillRule FillRule to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleFillRule(ome::xml::model::enums::FillRule fillRule, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontFamily property of Rectangle.
         *
         * @param fontFamily FontFamily to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleFontFamily(ome::xml::model::enums::FontFamily fontFamily, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontSize property of Rectangle.
         *
         * @param fontSize FontSize to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleFontSize(ome::xml::model::primitives::NonNegativeInteger fontSize, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the FontStyle property of Rectangle.
         *
         * @param fontStyle FontStyle to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleFontStyle(ome::xml::model::enums::FontStyle fontStyle, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the ID property of Rectangle.
         *
         * @param id ID to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleID(std::string id, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the LineCap property of Rectangle.
         *
         * @param lineCap LineCap to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleLineCap(ome::xml::model::enums::LineCap lineCap, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Locked property of Rectangle.
         *
         * @param locked Locked to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleLocked(bool locked, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeColor property of Rectangle.
         *
         * @param strokeColor StrokeColor to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleStrokeColor(ome::xml::model::primitives::Color strokeColor, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeDashArray property of Rectangle.
         *
         * @param strokeDashArray StrokeDashArray to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleStrokeDashArray(std::string strokeDashArray, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the StrokeWidth property of Rectangle.
         *
         * @param strokeWidth StrokeWidth to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleStrokeWidth(double strokeWidth, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Text property of Rectangle.
         *
         * @param text Text to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleText(std::string text, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheC property of Rectangle.
         *
         * @param theC TheC to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleTheC(ome::xml::model::primitives::NonNegativeInteger theC, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheT property of Rectangle.
         *
         * @param theT TheT to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleTheT(ome::xml::model::primitives::NonNegativeInteger theT, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the TheZ property of Rectangle.
         *
         * @param theZ TheZ to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleTheZ(ome::xml::model::primitives::NonNegativeInteger theZ, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Transform property of Rectangle.
         *
         * @param transform Transform to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleTransform(const ::ome::xml::model::AffineTransform& transform, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Visible property of Rectangle.
         *
         * @param visible Visible to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleVisible(bool visible, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Height property of Rectangle.
         *
         * @param height Height to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleHeight(double height, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Width property of Rectangle.
         *
         * @param width Width to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleWidth(double width, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the X property of Rectangle.
         *
         * @param x X to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleX(double x, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the Y property of Rectangle.
         *
         * @param y Y to set.
         * @param ROIIndex the ROI index.
         * @param shapeIndex the Shape index.
         */
	virtual void
        setRectangleY(double y, index_type ROIIndex, index_type shapeIndex) = 0;

	/**
         * Set the RightsHeld property of Rights.
         *
         * @param rightsHeld RightsHeld to set.
         */
	virtual void
        setRightsRightsHeld(std::string rightsHeld) = 0;

	/**
         * Set the RightsHolder property of Rights.
         *
         * @param rightsHolder RightsHolder to set.
         */
	virtual void
        setRightsRightsHolder(std::string rightsHolder) = 0;

	/**
         * Set the AnnotationRef property of Screen.
         *
         * @param annotation AnnotationRef to set.
         * @param screenIndex the Screen index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setScreenAnnotationRef(const std::string& annotation, index_type screenIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Description property of Screen.
         *
         * @param description Description to set.
         * @param screenIndex the Screen index.
         */
	virtual void
        setScreenDescription(std::string description, index_type screenIndex) = 0;

	/**
         * Set the ID property of Screen.
         *
         * @param id ID to set.
         * @param screenIndex the Screen index.
         */
	virtual void
        setScreenID(std::string id, index_type screenIndex) = 0;

	/**
         * Set the Name property of Screen.
         *
         * @param name Name to set.
         * @param screenIndex the Screen index.
         */
	virtual void
        setScreenName(std::string name, index_type screenIndex) = 0;

	/**
         * Set the PlateRef property of Screen.
         *
         * @param plate PlateRef to set.
         * @param screenIndex the Screen index.
         * @param plateRefIndex PlateRef index (unused).
         */
	virtual void
        setScreenPlateRef(const std::string& plate, index_type screenIndex, index_type plateRefIndex = 0) = 0;

	/**
         * Set the ProtocolDescription property of Screen.
         *
         * @param protocolDescription ProtocolDescription to set.
         * @param screenIndex the Screen index.
         */
	virtual void
        setScreenProtocolDescription(std::string protocolDescription, index_type screenIndex) = 0;

	/**
         * Set the ProtocolIdentifier property of Screen.
         *
         * @param protocolIdentifier ProtocolIdentifier to set.
         * @param screenIndex the Screen index.
         */
	virtual void
        setScreenProtocolIdentifier(std::string protocolIdentifier, index_type screenIndex) = 0;

	/**
         * Set the ReagentSetDescription property of Screen.
         *
         * @param reagentSetDescription ReagentSetDescription to set.
         * @param screenIndex the Screen index.
         */
	virtual void
        setScreenReagentSetDescription(std::string reagentSetDescription, index_type screenIndex) = 0;

	/**
         * Set the ReagentSetIdentifier property of Screen.
         *
         * @param reagentSetIdentifier ReagentSetIdentifier to set.
         * @param screenIndex the Screen index.
         */
	virtual void
        setScreenReagentSetIdentifier(std::string reagentSetIdentifier, index_type screenIndex) = 0;

	/**
         * Set the Type property of Screen.
         *
         * @param type Type to set.
         * @param screenIndex the Screen index.
         */
	virtual void
        setScreenType(std::string type, index_type screenIndex) = 0;

	/**
         * Set the Name property of StageLabel.
         *
         * @param name Name to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setStageLabelName(std::string name, index_type imageIndex) = 0;

	/**
         * Set the X property of StageLabel.
         *
         * @param x X to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setStageLabelX(double x, index_type imageIndex) = 0;

	/**
         * Set the Y property of StageLabel.
         *
         * @param y Y to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setStageLabelY(double y, index_type imageIndex) = 0;

	/**
         * Set the Z property of StageLabel.
         *
         * @param z Z to set.
         * @param imageIndex the Image index.
         */
	virtual void
        setStageLabelZ(double z, index_type imageIndex) = 0;

	/**
         * Set the AnnotationRef property of TagAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param tagAnnotationIndex the TagAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setTagAnnotationAnnotationRef(const std::string& annotation, index_type tagAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of TagAnnotation.
         *
         * @param annotator Annotator to set.
         * @param tagAnnotationIndex the TagAnnotation index.
         */
	virtual void
        setTagAnnotationAnnotator(std::string annotator, index_type tagAnnotationIndex) = 0;

	/**
         * Set the Description property of TagAnnotation.
         *
         * @param description Description to set.
         * @param tagAnnotationIndex the TagAnnotation index.
         */
	virtual void
        setTagAnnotationDescription(std::string description, index_type tagAnnotationIndex) = 0;

	/**
         * Set the ID property of TagAnnotation.
         *
         * @param id ID to set.
         * @param tagAnnotationIndex the TagAnnotation index.
         */
	virtual void
        setTagAnnotationID(std::string id, index_type tagAnnotationIndex) = 0;

	/**
         * Set the Namespace property of TagAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param tagAnnotationIndex the TagAnnotation index.
         */
	virtual void
        setTagAnnotationNamespace(std::string namespace_, index_type tagAnnotationIndex) = 0;

	/**
         * Set the Value property of TagAnnotation.
         *
         * @param value Value to set.
         * @param tagAnnotationIndex the TagAnnotation index.
         */
	virtual void
        setTagAnnotationValue(std::string value, index_type tagAnnotationIndex) = 0;

	/**
         * Set the AnnotationRef property of TermAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param termAnnotationIndex the TermAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setTermAnnotationAnnotationRef(const std::string& annotation, index_type termAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of TermAnnotation.
         *
         * @param annotator Annotator to set.
         * @param termAnnotationIndex the TermAnnotation index.
         */
	virtual void
        setTermAnnotationAnnotator(std::string annotator, index_type termAnnotationIndex) = 0;

	/**
         * Set the Description property of TermAnnotation.
         *
         * @param description Description to set.
         * @param termAnnotationIndex the TermAnnotation index.
         */
	virtual void
        setTermAnnotationDescription(std::string description, index_type termAnnotationIndex) = 0;

	/**
         * Set the ID property of TermAnnotation.
         *
         * @param id ID to set.
         * @param termAnnotationIndex the TermAnnotation index.
         */
	virtual void
        setTermAnnotationID(std::string id, index_type termAnnotationIndex) = 0;

	/**
         * Set the Namespace property of TermAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param termAnnotationIndex the TermAnnotation index.
         */
	virtual void
        setTermAnnotationNamespace(std::string namespace_, index_type termAnnotationIndex) = 0;

	/**
         * Set the Value property of TermAnnotation.
         *
         * @param value Value to set.
         * @param termAnnotationIndex the TermAnnotation index.
         */
	virtual void
        setTermAnnotationValue(std::string value, index_type termAnnotationIndex) = 0;

	/**
         * Set the FirstC property of TiffData.
         *
         * @param firstC FirstC to set.
         * @param imageIndex the Image index.
         * @param tiffDataIndex the TiffData index.
         */
	virtual void
        setTiffDataFirstC(ome::xml::model::primitives::NonNegativeInteger firstC, index_type imageIndex, index_type tiffDataIndex) = 0;

	/**
         * Set the FirstT property of TiffData.
         *
         * @param firstT FirstT to set.
         * @param imageIndex the Image index.
         * @param tiffDataIndex the TiffData index.
         */
	virtual void
        setTiffDataFirstT(ome::xml::model::primitives::NonNegativeInteger firstT, index_type imageIndex, index_type tiffDataIndex) = 0;

	/**
         * Set the FirstZ property of TiffData.
         *
         * @param firstZ FirstZ to set.
         * @param imageIndex the Image index.
         * @param tiffDataIndex the TiffData index.
         */
	virtual void
        setTiffDataFirstZ(ome::xml::model::primitives::NonNegativeInteger firstZ, index_type imageIndex, index_type tiffDataIndex) = 0;

	/**
         * Set the IFD property of TiffData.
         *
         * @param ifd IFD to set.
         * @param imageIndex the Image index.
         * @param tiffDataIndex the TiffData index.
         */
	virtual void
        setTiffDataIFD(ome::xml::model::primitives::NonNegativeInteger ifd, index_type imageIndex, index_type tiffDataIndex) = 0;

	/**
         * Set the PlaneCount property of TiffData.
         *
         * @param planeCount PlaneCount to set.
         * @param imageIndex the Image index.
         * @param tiffDataIndex the TiffData index.
         */
	virtual void
        setTiffDataPlaneCount(ome::xml::model::primitives::NonNegativeInteger planeCount, index_type imageIndex, index_type tiffDataIndex) = 0;

	/**
         * Set the AnnotationRef property of TimestampAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param timestampAnnotationIndex the TimestampAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setTimestampAnnotationAnnotationRef(const std::string& annotation, index_type timestampAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of TimestampAnnotation.
         *
         * @param annotator Annotator to set.
         * @param timestampAnnotationIndex the TimestampAnnotation index.
         */
	virtual void
        setTimestampAnnotationAnnotator(std::string annotator, index_type timestampAnnotationIndex) = 0;

	/**
         * Set the Description property of TimestampAnnotation.
         *
         * @param description Description to set.
         * @param timestampAnnotationIndex the TimestampAnnotation index.
         */
	virtual void
        setTimestampAnnotationDescription(std::string description, index_type timestampAnnotationIndex) = 0;

	/**
         * Set the ID property of TimestampAnnotation.
         *
         * @param id ID to set.
         * @param timestampAnnotationIndex the TimestampAnnotation index.
         */
	virtual void
        setTimestampAnnotationID(std::string id, index_type timestampAnnotationIndex) = 0;

	/**
         * Set the Namespace property of TimestampAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param timestampAnnotationIndex the TimestampAnnotation index.
         */
	virtual void
        setTimestampAnnotationNamespace(std::string namespace_, index_type timestampAnnotationIndex) = 0;

	/**
         * Set the Value property of TimestampAnnotation.
         *
         * @param value Value to set.
         * @param timestampAnnotationIndex the TimestampAnnotation index.
         */
	virtual void
        setTimestampAnnotationValue(ome::xml::model::primitives::Timestamp value, index_type timestampAnnotationIndex) = 0;

	/**
         * Set the CutIn property of TransmittanceRange.
         *
         * @param cutIn CutIn to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setTransmittanceRangeCutIn(ome::xml::model::primitives::PositiveInteger cutIn, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the CutInTolerance property of TransmittanceRange.
         *
         * @param cutInTolerance CutInTolerance to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setTransmittanceRangeCutInTolerance(ome::xml::model::primitives::NonNegativeInteger cutInTolerance, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the CutOut property of TransmittanceRange.
         *
         * @param cutOut CutOut to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setTransmittanceRangeCutOut(ome::xml::model::primitives::PositiveInteger cutOut, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the CutOutTolerance property of TransmittanceRange.
         *
         * @param cutOutTolerance CutOutTolerance to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setTransmittanceRangeCutOutTolerance(ome::xml::model::primitives::NonNegativeInteger cutOutTolerance, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the Transmittance property of TransmittanceRange.
         *
         * @param transmittance Transmittance to set.
         * @param instrumentIndex the Instrument index.
         * @param filterIndex the Filter index.
         */
	virtual void
        setTransmittanceRangeTransmittance(ome::xml::model::primitives::PercentFraction transmittance, index_type instrumentIndex, index_type filterIndex) = 0;

	/**
         * Set the text value of UUID.
         *
         * @param value text value.
         * @param imageIndex the Image index.
         * @param tiffDataIndex the TiffData index.
         */
	virtual void
        setUUIDValue(std::string value, index_type imageIndex, index_type tiffDataIndex) = 0;

	/**
         * Set the FileName property of UUID.
         *
         * @param fileName FileName to set.
         * @param imageIndex the Image index.
         * @param tiffDataIndex the TiffData index.
         */
	virtual void
        setUUIDFileName(std::string fileName, index_type imageIndex, index_type tiffDataIndex) = 0;

	/**
         * Set the AnnotationRef property of Well.
         *
         * @param annotation AnnotationRef to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setWellAnnotationRef(const std::string& annotation, index_type plateIndex, index_type wellIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Color property of Well.
         *
         * @param color Color to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         */
	virtual void
        setWellColor(ome::xml::model::primitives::Color color, index_type plateIndex, index_type wellIndex) = 0;

	/**
         * Set the Column property of Well.
         *
         * @param column Column to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         */
	virtual void
        setWellColumn(ome::xml::model::primitives::NonNegativeInteger column, index_type plateIndex, index_type wellIndex) = 0;

	/**
         * Set the ExternalDescription property of Well.
         *
         * @param externalDescription ExternalDescription to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         */
	virtual void
        setWellExternalDescription(std::string externalDescription, index_type plateIndex, index_type wellIndex) = 0;

	/**
         * Set the ExternalIdentifier property of Well.
         *
         * @param externalIdentifier ExternalIdentifier to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         */
	virtual void
        setWellExternalIdentifier(std::string externalIdentifier, index_type plateIndex, index_type wellIndex) = 0;

	/**
         * Set the ID property of Well.
         *
         * @param id ID to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         */
	virtual void
        setWellID(std::string id, index_type plateIndex, index_type wellIndex) = 0;

	/**
         * Set the ReagentRef property of Well.
         *
         * @param reagent ReagentRef to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         */
	virtual void
        setWellReagentRef(const std::string& reagent, index_type plateIndex, index_type wellIndex) = 0;

	/**
         * Set the Row property of Well.
         *
         * @param row Row to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         */
	virtual void
        setWellRow(ome::xml::model::primitives::NonNegativeInteger row, index_type plateIndex, index_type wellIndex) = 0;

	/**
         * Set the Type property of Well.
         *
         * @param type Type to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         */
	virtual void
        setWellType(std::string type, index_type plateIndex, index_type wellIndex) = 0;

	/**
         * Set the AnnotationRef property of WellSample.
         *
         * @param annotation AnnotationRef to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         * @param wellSampleIndex the WellSample index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setWellSampleAnnotationRef(const std::string& annotation, index_type plateIndex, index_type wellIndex, index_type wellSampleIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the ID property of WellSample.
         *
         * @param id ID to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         * @param wellSampleIndex the WellSample index.
         */
	virtual void
        setWellSampleID(std::string id, index_type plateIndex, index_type wellIndex, index_type wellSampleIndex) = 0;

	/**
         * Set the ImageRef property of WellSample.
         *
         * @param image ImageRef to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         * @param wellSampleIndex the WellSample index.
         */
	virtual void
        setWellSampleImageRef(const std::string& image, index_type plateIndex, index_type wellIndex, index_type wellSampleIndex) = 0;

	/**
         * Set the Index property of WellSample.
         *
         * @param index Index to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         * @param wellSampleIndex the WellSample index.
         */
	virtual void
        setWellSampleIndex(ome::xml::model::primitives::NonNegativeInteger index, index_type plateIndex, index_type wellIndex, index_type wellSampleIndex) = 0;

	/**
         * Set the PositionX property of WellSample.
         *
         * @param positionX PositionX to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         * @param wellSampleIndex the WellSample index.
         */
	virtual void
        setWellSamplePositionX(double positionX, index_type plateIndex, index_type wellIndex, index_type wellSampleIndex) = 0;

	/**
         * Set the PositionY property of WellSample.
         *
         * @param positionY PositionY to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         * @param wellSampleIndex the WellSample index.
         */
	virtual void
        setWellSamplePositionY(double positionY, index_type plateIndex, index_type wellIndex, index_type wellSampleIndex) = 0;

	/**
         * Set the Timepoint property of WellSample.
         *
         * @param timepoint Timepoint to set.
         * @param plateIndex the Plate index.
         * @param wellIndex the Well index.
         * @param wellSampleIndex the WellSample index.
         */
	virtual void
        setWellSampleTimepoint(ome::xml::model::primitives::Timestamp timepoint, index_type plateIndex, index_type wellIndex, index_type wellSampleIndex) = 0;

	/**
         * Set the AnnotationRef property of XMLAnnotation.
         *
         * @param annotation AnnotationRef to set.
         * @param XMLAnnotationIndex the XMLAnnotation index.
         * @param annotationRefIndex AnnotationRef index (unused).
         */
	virtual void
        setXMLAnnotationAnnotationRef(const std::string& annotation, index_type XMLAnnotationIndex, index_type annotationRefIndex = 0) = 0;

	/**
         * Set the Annotator property of XMLAnnotation.
         *
         * @param annotator Annotator to set.
         * @param XMLAnnotationIndex the XMLAnnotation index.
         */
	virtual void
        setXMLAnnotationAnnotator(std::string annotator, index_type XMLAnnotationIndex) = 0;

	/**
         * Set the Description property of XMLAnnotation.
         *
         * @param description Description to set.
         * @param XMLAnnotationIndex the XMLAnnotation index.
         */
	virtual void
        setXMLAnnotationDescription(std::string description, index_type XMLAnnotationIndex) = 0;

	/**
         * Set the ID property of XMLAnnotation.
         *
         * @param id ID to set.
         * @param XMLAnnotationIndex the XMLAnnotation index.
         */
	virtual void
        setXMLAnnotationID(std::string id, index_type XMLAnnotationIndex) = 0;

	/**
         * Set the Namespace property of XMLAnnotation.
         *
         * @param namespace_ Namespace to set.
         * @param XMLAnnotationIndex the XMLAnnotation index.
         */
	virtual void
        setXMLAnnotationNamespace(std::string namespace_, index_type XMLAnnotationIndex) = 0;

	/**
         * Set the Value property of XMLAnnotation.
         *
         * @param value Value to set.
         * @param XMLAnnotationIndex the XMLAnnotation index.
         */
	virtual void
        setXMLAnnotationValue(std::string value, index_type XMLAnnotationIndex) = 0;

      };

    }
  }
}

#endif // OME_XML_META_METADATASTORE_H

/*
 * Local Variables:
 * mode:C++
 * End:
 */
