text:
package umich.ms.fileio.filetypes.mzxml.jaxb;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
import javax.xml.datatype.Duration;

/**
 *
Java class for anonymous complex type.
 *
 *
The following schema fragment specifies the expected content contained within this class.
 *
 *

 * <complexType>
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <sequence>
 *         <element name="parentFile" maxOccurs="unbounded">
 *           <complexType>
 *             <simpleContent>
 *               <extension base="<http://www.w3.org/2001/XMLSchema>anySimpleType">
 *                 <attribute name="fileName" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
 *                 <attribute name="fileType" use="required">
 *                   <simpleType>
 *                     <restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *                       <enumeration value="RAWData"/>
 *                       <enumeration value="processedData"/>
 *                     </restriction>
 *                   </simpleType>
 *                 </attribute>
 *                 <attribute name="fileSha1" use="required">
 *                   <simpleType>
 *                     <restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *                       <length value="40"/>
 *                     </restriction>
 *                   </simpleType>
 *                 </attribute>
 *               </extension>
 *             </simpleContent>
 *           </complexType>
 *         </element>
 *         <element name="msInstrument" maxOccurs="unbounded" minOccurs="0">
 *           <complexType>
 *             <complexContent>
 *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 <sequence>
 *                   <element name="msManufacturer">
 *                     <complexType>
 *                       <complexContent>
 *                         <extension base="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType">
 *                         </extension>
 *                       </complexContent>
 *                     </complexType>
 *                   </element>
 *                   <element name="msModel" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
 *                   <element name="msIonisation" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
 *                   <element name="msMassAnalyzer">
 *                     <complexType>
 *                       <complexContent>
 *                         <extension base="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType">
 *                         </extension>
 *                       </complexContent>
 *                     </complexType>
 *                   </element>
 *                   <element name="msDetector" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
 *                   <element ref="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}software"/>
 *                   <element name="msResolution" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType" minOccurs="0"/>
 *                   <element ref="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}operator" minOccurs="0"/>
 *                   <sequence maxOccurs="unbounded" minOccurs="0">
 *                     <element name="nameValue" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}namevalueType"/>
 *                     <element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *                   </sequence>
 *                 </sequence>
 *                 <attribute name="msInstrumentID" type="{http://www.w3.org/2001/XMLSchema}int" />
 *               </restriction>
 *             </complexContent>
 *           </complexType>
 *         </element>
 *         <element name="dataProcessing" maxOccurs="unbounded">
 *           <complexType>
 *             <complexContent>
 *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 <sequence>
 *                   <element ref="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}software"/>
 *                   <sequence maxOccurs="unbounded" minOccurs="0">
 *                     <element name="processingOperation" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}namevalueType"/>
 *                     <element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *                   </sequence>
 *                 </sequence>
 *                 <attribute name="intensityCutoff" type="{http://www.w3.org/2001/XMLSchema}float" />
 *                 <attribute name="centroided" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *                 <attribute name="deisotoped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *                 <attribute name="chargeDeconvoluted" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *                 <attribute name="spotIntegration" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *               </restriction>
 *             </complexContent>
 *           </complexType>
 *         </element>
 *         <element name="separation" minOccurs="0">
 *           <complexType>
 *             <complexContent>
 *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 <sequence>
 *                   <element ref="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}separationTechnique" maxOccurs="unbounded"/>
 *                 </sequence>
 *               </restriction>
 *             </complexContent>
 *           </complexType>
 *         </element>
 *         <element name="spotting" minOccurs="0">
 *           <complexType>
 *             <complexContent>
 *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 <sequence>
 *                   <element name="plate" maxOccurs="unbounded">
 *                     <complexType>
 *                       <complexContent>
 *                         <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                           <sequence>
 *                             <element name="plateManufacturer" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
 *                             <element name="plateModel" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
 *                             <element name="pattern" minOccurs="0">
 *                               <complexType>
 *                                 <complexContent>
 *                                   <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                                     <sequence>
 *                                       <element name="spottingPattern" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
 *                                       <element name="orientation">
 *                                         <complexType>
 *                                           <complexContent>
 *                                             <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                                               <attribute name="firstSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *                                               <attribute name="secondSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *                                             </restriction>
 *                                           </complexContent>
 *                                         </complexType>
 *                                       </element>
 *                                     </sequence>
 *                                   </restriction>
 *                                 </complexContent>
 *                               </complexType>
 *                             </element>
 *                             <element name="spot" maxOccurs="unbounded">
 *                               <complexType>
 *                                 <complexContent>
 *                                   <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                                     <sequence>
 *                                       <element name="maldiMatrix" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
 *                                     </sequence>
 *                                     <attribute name="spotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *                                     <attribute name="spotXPosition" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *                                     <attribute name="spotYPosition" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *                                     <attribute name="spotDiameter" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
 *                                   </restriction>
 *                                 </complexContent>
 *                               </complexType>
 *                             </element>
 *                           </sequence>
 *                           <attribute name="plateID" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
 *                           <attribute name="spotXCount" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
 *                           <attribute name="spotYCount" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
 *                         </restriction>
 *                       </complexContent>
 *                     </complexType>
 *                   </element>
 *                   <element name="robot" minOccurs="0">
 *                     <complexType>
 *                       <complexContent>
 *                         <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                           <sequence>
 *                             <element name="robotManufacturer" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
 *                             <element name="robotModel" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
 *                           </sequence>
 *                           <attribute name="timePerSpot" use="required" type="{http://www.w3.org/2001/XMLSchema}duration" />
 *                           <attribute name="deadVolume" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
 *                         </restriction>
 *                       </complexContent>
 *                     </complexType>
 *                   </element>
 *                 </sequence>
 *               </restriction>
 *             </complexContent>
 *           </complexType>
 *         </element>
 *         <element ref="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}scan" maxOccurs="unbounded"/>
 *         <element name="sha1" minOccurs="0">
 *           <simpleType>
 *             <restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *               <length value="40"/>
 *             </restriction>
 *           </simpleType>
 *         </element>
 *       </sequence>
 *       <attribute name="scanCount" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
 *       <attribute name="startTime" type="{http://www.w3.org/2001/XMLSchema}duration" />
 *       <attribute name="endTime" type="{http://www.w3.org/2001/XMLSchema}duration" />
 *     </restriction>
 *   </complexContent>
 * </complexType>
 *

 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "parentFile",
    "msInstrument",
    "dataProcessing",
    "separation",
    "spotting",
    "scan",
    "sha1"
})
@XmlRootElement(name = "msRun")
public class MsRun {

  @XmlElement(required = true)
  protected List<MsRun.ParentFile> parentFile;
  protected List<MsRun.MsInstrument> msInstrument;
  @XmlElement(required = true)
  protected List<MsRun.DataProcessing> dataProcessing;
  protected MsRun.Separation separation;
  protected MsRun.Spotting spotting;
  @XmlElement(required = true)
  protected List<Scan> scan;
  protected String sha1;
  @XmlAttribute(name = "scanCount")
  @XmlSchemaType(name = "positiveInteger")
  protected BigInteger scanCount;
  @XmlAttribute(name = "startTime")
  protected String startTime;
  @XmlAttribute(name = "endTime")
  protected String endTime;

  /**
   * Gets the value of the parentFile property.
   *
   *

   * This accessor method returns a reference to the live list, not a snapshot. Therefore any
   * modification you make to the returned list will be present inside the JAXB object. This is why
   * there is not a set method for the parentFile property.
   *
   *

   * For example, to add a new item, do as follows:
   *

   *    getParentFile().add(newItem);
   *

   *
   *
   *

   * Objects of the following type(s) are allowed in the list {@link MsRun.ParentFile }
   */
  public List<MsRun.ParentFile> getParentFile() {
    if (parentFile == null) {
      parentFile = new ArrayList<MsRun.ParentFile>();
    }
    return this.parentFile;
  }

  /**
   * Gets the value of the msInstrument property.
   *
   *

   * This accessor method returns a reference to the live list, not a snapshot. Therefore any
   * modification you make to the returned list will be present inside the JAXB object. This is why
   * there is not a set method for the msInstrument property.
   *
   *

   * For example, to add a new item, do as follows:
   *

   *    getMsInstrument().add(newItem);
   *

   *
   *
   *

   * Objects of the following type(s) are allowed in the list {@link MsRun.MsInstrument }
   */
  public List<MsRun.MsInstrument> getMsInstrument() {
    if (msInstrument == null) {
      msInstrument = new ArrayList<MsRun.MsInstrument>();
    }
    return this.msInstrument;
  }

  /**
   * Gets the value of the dataProcessing property.
   *
   *

   * This accessor method returns a reference to the live list, not a snapshot. Therefore any
   * modification you make to the returned list will be present inside the JAXB object. This is why
   * there is not a set method for the dataProcessing property.
   *
   *

   * For example, to add a new item, do as follows:
   *

   *    getDataProcessing().add(newItem);
   *

   *
   *
   *

   * Objects of the following type(s) are allowed in the list {@link MsRun.DataProcessing }
   */
  public List<MsRun.DataProcessing> getDataProcessing() {
    if (dataProcessing == null) {
      dataProcessing = new ArrayList<MsRun.DataProcessing>();
    }
    return this.dataProcessing;
  }

  /**
   * Gets the value of the separation property.
   *
   * @return possible object is {@link MsRun.Separation }
   */
  public MsRun.Separation getSeparation() {
    return separation;
  }

  /**
   * Sets the value of the separation property.
   *
   * @param value allowed object is {@link MsRun.Separation }
   */
  public void setSeparation(MsRun.Separation value) {
    this.separation = value;
  }

  /**
   * Gets the value of the spotting property.
   *
   * @return possible object is {@link MsRun.Spotting }
   */
  public MsRun.Spotting getSpotting() {
    return spotting;
  }

  /**
   * Sets the value of the spotting property.
   *
   * @param value allowed object is {@link MsRun.Spotting }
   */
  public void setSpotting(MsRun.Spotting value) {
    this.spotting = value;
  }

  /**
   * Gets the value of the scan property.
   *
   *

   * This accessor method returns a reference to the live list, not a snapshot. Therefore any
   * modification you make to the returned list will be present inside the JAXB object. This is why
   * there is not a set method for the scan property.
   *
   *

   * For example, to add a new item, do as follows:
   *

   *    getScan().add(newItem);
   *

   *
   *
   *

   * Objects of the following type(s) are allowed in the list {@link Scan }
   */
  public List<Scan> getScan() {
    if (scan == null) {
      scan = new ArrayList<Scan>();
    }
    return this.scan;
  }

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

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

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

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

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

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

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

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

  /**
   *
Java class for anonymous complex type.
   *
   *
The following schema fragment specifies the expected content contained within this class.
   *
   *

   * <complexType>
   *   <complexContent>
   *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
   *       <sequence>
   *         <element ref="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}software"/>
   *         <sequence maxOccurs="unbounded" minOccurs="0">
   *           <element name="processingOperation" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}namevalueType"/>
   *           <element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
   *         </sequence>
   *       </sequence>
   *       <attribute name="intensityCutoff" type="{http://www.w3.org/2001/XMLSchema}float" />
   *       <attribute name="centroided" type="{http://www.w3.org/2001/XMLSchema}boolean" />
   *       <attribute name="deisotoped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
   *       <attribute name="chargeDeconvoluted" type="{http://www.w3.org/2001/XMLSchema}boolean" />
   *       <attribute name="spotIntegration" type="{http://www.w3.org/2001/XMLSchema}boolean" />
   *     </restriction>
   *   </complexContent>
   * </complexType>
   *

   */
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "", propOrder = {
      "software",
      "processingOperationAndComment"
  })
  public static class DataProcessing {

    @XmlElement(required = true)
    protected Software software;
    @XmlElements({
        @XmlElement(name = "processingOperation", type = NamevalueType.class),
        @XmlElement(name = "comment", type = String.class)
    })
    protected List<Object> processingOperationAndComment;
    @XmlAttribute(name = "intensityCutoff")
    protected Float intensityCutoff;
    @XmlAttribute(name = "centroided")
    protected Boolean centroided;
    @XmlAttribute(name = "deisotoped")
    protected Boolean deisotoped;
    @XmlAttribute(name = "chargeDeconvoluted")
    protected Boolean chargeDeconvoluted;
    @XmlAttribute(name = "spotIntegration")
    protected Boolean spotIntegration;

    /**
     * Software used to convert the data. If data has been processed (e.g. profile > centroid) by
     * any additional progs these should be added too.
     *
     * @return possible object is {@link Software }
     */
    public Software getSoftware() {
      return software;
    }

    /**
     * Sets the value of the software property.
     *
     * @param value allowed object is {@link Software }
     */
    public void setSoftware(Software value) {
      this.software = value;
    }

    /**
     * Gets the value of the processingOperationAndComment property.
     *
     *

     * This accessor method returns a reference to the live list, not a snapshot. Therefore any
     * modification you make to the returned list will be present inside the JAXB object. This is
     * why there is not a set method for the processingOperationAndComment property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getProcessingOperationAndComment().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list {@link NamevalueType } {@link String
     * }
     */
    public List<Object> getProcessingOperationAndComment() {
      if (processingOperationAndComment == null) {
        processingOperationAndComment = new ArrayList<Object>();
      }
      return this.processingOperationAndComment;
    }

    /**
     * Gets the value of the intensityCutoff property.
     *
     * @return possible object is {@link Float }
     */
    public Float getIntensityCutoff() {
      return intensityCutoff;
    }

    /**
     * Sets the value of the intensityCutoff property.
     *
     * @param value allowed object is {@link Float }
     */
    public void setIntensityCutoff(Float value) {
      this.intensityCutoff = value;
    }

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

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

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

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

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

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

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

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

  }

  /**
   *
Java class for anonymous complex type.
   *
   *
The following schema fragment specifies the expected content contained within this class.
   *
   *

   * <complexType>
   *   <complexContent>
   *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
   *       <sequence>
   *         <element name="msManufacturer">
   *           <complexType>
   *             <complexContent>
   *               <extension base="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType">
   *               </extension>
   *             </complexContent>
   *           </complexType>
   *         </element>
   *         <element name="msModel" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
   *         <element name="msIonisation" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
   *         <element name="msMassAnalyzer">
   *           <complexType>
   *             <complexContent>
   *               <extension base="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType">
   *               </extension>
   *             </complexContent>
   *           </complexType>
   *         </element>
   *         <element name="msDetector" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
   *         <element ref="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}software"/>
   *         <element name="msResolution" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType" minOccurs="0"/>
   *         <element ref="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}operator" minOccurs="0"/>
   *         <sequence maxOccurs="unbounded" minOccurs="0">
   *           <element name="nameValue" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}namevalueType"/>
   *           <element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
   *         </sequence>
   *       </sequence>
   *       <attribute name="msInstrumentID" type="{http://www.w3.org/2001/XMLSchema}int" />
   *     </restriction>
   *   </complexContent>
   * </complexType>
   *

   */
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "", propOrder = {
      "msManufacturer",
      "msModel",
      "msIonisation",
      "msMassAnalyzer",
      "msDetector",
      "software",
      "msResolution",
      "operator",
      "nameValueAndComment"
  })
  public static class MsInstrument {

    @XmlElement(required = true)
    protected MsRun.MsInstrument.MsManufacturer msManufacturer;
    @XmlElement(required = true)
    protected OntologyEntryType msModel;
    @XmlElement(required = true)
    protected OntologyEntryType msIonisation;
    @XmlElement(required = true)
    protected MsRun.MsInstrument.MsMassAnalyzer msMassAnalyzer;
    @XmlElement(required = true)
    protected OntologyEntryType msDetector;
    @XmlElement(required = true)
    protected Software software;
    protected OntologyEntryType msResolution;
    protected Operator operator;
    @XmlElements({
        @XmlElement(name = "nameValue", type = NamevalueType.class),
        @XmlElement(name = "comment", type = String.class)
    })
    protected List<Object> nameValueAndComment;
    /**
     * Even though according to schema this must be an integer, we've seen cases, where ProteoWizard
     * uses a String
     */
    @XmlAttribute(name = "msInstrumentID")
    protected String msInstrumentID;
    /**
     * This is not in mzXML 3.2 standard, but ProteoWizard version="2.2.3052" uses this attribute
     * instead of msInstrumentID
     */
    @XmlAttribute(name = "id")
    protected String stringInstrumentID;

    public String getStringInstrumentID() {
      return stringInstrumentID;
    }

    public void setStringInstrumentID(String stringInstrumentID) {
      this.stringInstrumentID = stringInstrumentID;
    }

    /**
     * Gets the value of the msManufacturer property.
     *
     * @return possible object is {@link MsRun.MsInstrument.MsManufacturer }
     */
    public MsRun.MsInstrument.MsManufacturer getMsManufacturer() {
      return msManufacturer;
    }

    /**
     * Sets the value of the msManufacturer property.
     *
     * @param value allowed object is {@link MsRun.MsInstrument.MsManufacturer }
     */
    public void setMsManufacturer(MsRun.MsInstrument.MsManufacturer value) {
      this.msManufacturer = value;
    }

    /**
     * Gets the value of the msModel property.
     *
     * @return possible object is {@link OntologyEntryType }
     */
    public OntologyEntryType getMsModel() {
      return msModel;
    }

    /**
     * Sets the value of the msModel property.
     *
     * @param value allowed object is {@link OntologyEntryType }
     */
    public void setMsModel(OntologyEntryType value) {
      this.msModel = value;
    }

    /**
     * Gets the value of the msIonisation property.
     *
     * @return possible object is {@link OntologyEntryType }
     */
    public OntologyEntryType getMsIonisation() {
      return msIonisation;
    }

    /**
     * Sets the value of the msIonisation property.
     *
     * @param value allowed object is {@link OntologyEntryType }
     */
    public void setMsIonisation(OntologyEntryType value) {
      this.msIonisation = value;
    }

    /**
     * Gets the value of the msMassAnalyzer property.
     *
     * @return possible object is {@link MsRun.MsInstrument.MsMassAnalyzer }
     */
    public MsRun.MsInstrument.MsMassAnalyzer getMsMassAnalyzer() {
      return msMassAnalyzer;
    }

    /**
     * Sets the value of the msMassAnalyzer property.
     *
     * @param value allowed object is {@link MsRun.MsInstrument.MsMassAnalyzer }
     */
    public void setMsMassAnalyzer(MsRun.MsInstrument.MsMassAnalyzer value) {
      this.msMassAnalyzer = value;
    }

    /**
     * Gets the value of the msDetector property.
     *
     * @return possible object is {@link OntologyEntryType }
     */
    public OntologyEntryType getMsDetector() {
      return msDetector;
    }

    /**
     * Sets the value of the msDetector property.
     *
     * @param value allowed object is {@link OntologyEntryType }
     */
    public void setMsDetector(OntologyEntryType value) {
      this.msDetector = value;
    }

    /**
     * Gets the value of the software property.
     *
     * @return possible object is {@link Software }
     */
    public Software getSoftware() {
      return software;
    }

    /**
     * Sets the value of the software property.
     *
     * @param value allowed object is {@link Software }
     */
    public void setSoftware(Software value) {
      this.software = value;
    }

    /**
     * Gets the value of the msResolution property.
     *
     * @return possible object is {@link OntologyEntryType }
     */
    public OntologyEntryType getMsResolution() {
      return msResolution;
    }

    /**
     * Sets the value of the msResolution property.
     *
     * @param value allowed object is {@link OntologyEntryType }
     */
    public void setMsResolution(OntologyEntryType value) {
      this.msResolution = value;
    }

    /**
     * Gets the value of the operator property.
     *
     * @return possible object is {@link Operator }
     */
    public Operator getOperator() {
      return operator;
    }

    /**
     * Sets the value of the operator property.
     *
     * @param value allowed object is {@link Operator }
     */
    public void setOperator(Operator value) {
      this.operator = value;
    }

    /**
     * Gets the value of the nameValueAndComment property.
     *
     *

     * This accessor method returns a reference to the live list, not a snapshot. Therefore any
     * modification you make to the returned list will be present inside the JAXB object. This is
     * why there is not a set method for the nameValueAndComment property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getNameValueAndComment().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list {@link NamevalueType } {@link String
     * }
     */
    public List<Object> getNameValueAndComment() {
      if (nameValueAndComment == null) {
        nameValueAndComment = new ArrayList<Object>();
      }
      return this.nameValueAndComment;
    }

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

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

    /**
     *
Java class for anonymous complex type.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *
     *

     * <complexType>
     *   <complexContent>
     *     <extension base="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType">
     *     </extension>
     *   </complexContent>
     * </complexType>
     *

     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    public static class MsManufacturer
        extends OntologyEntryType {

    }

    /**
     *
Java class for anonymous complex type.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *
     *

     * <complexType>
     *   <complexContent>
     *     <extension base="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType">
     *     </extension>
     *   </complexContent>
     * </complexType>
     *

     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    public static class MsMassAnalyzer
        extends OntologyEntryType {

    }

  }

  /**
   *
Java class for anonymous complex type.
   *
   *
The following schema fragment specifies the expected content contained within this class.
   *
   *

   * <complexType>
   *   <simpleContent>
   *     <extension base="<http://www.w3.org/2001/XMLSchema>anySimpleType">
   *       <attribute name="fileName" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
   *       <attribute name="fileType" use="required">
   *         <simpleType>
   *           <restriction base="{http://www.w3.org/2001/XMLSchema}string">
   *             <enumeration value="RAWData"/>
   *             <enumeration value="processedData"/>
   *           </restriction>
   *         </simpleType>
   *       </attribute>
   *       <attribute name="fileSha1" use="required">
   *         <simpleType>
   *           <restriction base="{http://www.w3.org/2001/XMLSchema}string">
   *             <length value="40"/>
   *           </restriction>
   *         </simpleType>
   *       </attribute>
   *     </extension>
   *   </simpleContent>
   * </complexType>
   *

   */
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "", propOrder = {
      "value"
  })
  public static class ParentFile {

    @XmlValue
    @XmlSchemaType(name = "anySimpleType")
    protected Object value;
    @XmlAttribute(name = "fileName", required = true)
    @XmlSchemaType(name = "anyURI")
    protected String fileName;
    @XmlAttribute(name = "fileType", required = true)
    protected String fileType;
    @XmlAttribute(name = "fileSha1", required = true)
    protected String fileSha1;

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

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

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

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

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

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

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

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

  }

  /**
   *
Java class for anonymous complex type.
   *
   *
The following schema fragment specifies the expected content contained within this class.
   *
   *

   * <complexType>
   *   <complexContent>
   *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
   *       <sequence>
   *         <element ref="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}separationTechnique" maxOccurs="unbounded"/>
   *       </sequence>
   *     </restriction>
   *   </complexContent>
   * </complexType>
   *

   */
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "", propOrder = {
      "separationTechnique"
  })
  public static class Separation {

    @XmlElement(required = true)
    protected List<SeparationTechniqueType> separationTechnique;

    /**
     * Gets the value of the separationTechnique property.
     *
     *

     * This accessor method returns a reference to the live list, not a snapshot. Therefore any
     * modification you make to the returned list will be present inside the JAXB object. This is
     * why there is not a set method for the separationTechnique property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getSeparationTechnique().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list {@link SeparationTechniqueType }
     */
    public List<SeparationTechniqueType> getSeparationTechnique() {
      if (separationTechnique == null) {
        separationTechnique = new ArrayList<SeparationTechniqueType>();
      }
      return this.separationTechnique;
    }

  }

  /**
   *
Java class for anonymous complex type.
   *
   *
The following schema fragment specifies the expected content contained within this class.
   *
   *

   * <complexType>
   *   <complexContent>
   *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
   *       <sequence>
   *         <element name="plate" maxOccurs="unbounded">
   *           <complexType>
   *             <complexContent>
   *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
   *                 <sequence>
   *                   <element name="plateManufacturer" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
   *                   <element name="plateModel" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
   *                   <element name="pattern" minOccurs="0">
   *                     <complexType>
   *                       <complexContent>
   *                         <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
   *                           <sequence>
   *                             <element name="spottingPattern" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
   *                             <element name="orientation">
   *                               <complexType>
   *                                 <complexContent>
   *                                   <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
   *                                     <attribute name="firstSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
   *                                     <attribute name="secondSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
   *                                   </restriction>
   *                                 </complexContent>
   *                               </complexType>
   *                             </element>
   *                           </sequence>
   *                         </restriction>
   *                       </complexContent>
   *                     </complexType>
   *                   </element>
   *                   <element name="spot" maxOccurs="unbounded">
   *                     <complexType>
   *                       <complexContent>
   *                         <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
   *                           <sequence>
   *                             <element name="maldiMatrix" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
   *                           </sequence>
   *                           <attribute name="spotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
   *                           <attribute name="spotXPosition" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
   *                           <attribute name="spotYPosition" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
   *                           <attribute name="spotDiameter" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
   *                         </restriction>
   *                       </complexContent>
   *                     </complexType>
   *                   </element>
   *                 </sequence>
   *                 <attribute name="plateID" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
   *                 <attribute name="spotXCount" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
   *                 <attribute name="spotYCount" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
   *               </restriction>
   *             </complexContent>
   *           </complexType>
   *         </element>
   *         <element name="robot" minOccurs="0">
   *           <complexType>
   *             <complexContent>
   *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
   *                 <sequence>
   *                   <element name="robotManufacturer" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
   *                   <element name="robotModel" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
   *                 </sequence>
   *                 <attribute name="timePerSpot" use="required" type="{http://www.w3.org/2001/XMLSchema}duration" />
   *                 <attribute name="deadVolume" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
   *               </restriction>
   *             </complexContent>
   *           </complexType>
   *         </element>
   *       </sequence>
   *     </restriction>
   *   </complexContent>
   * </complexType>
   *

   */
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "", propOrder = {
      "plate",
      "robot"
  })
  public static class Spotting {

    @XmlElement(required = true)
    protected List<MsRun.Spotting.Plate> plate;
    protected MsRun.Spotting.Robot robot;

    /**
     * Gets the value of the plate property.
     *
     *

     * This accessor method returns a reference to the live list, not a snapshot. Therefore any
     * modification you make to the returned list will be present inside the JAXB object. This is
     * why there is not a set method for the plate property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getPlate().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list {@link MsRun.Spotting.Plate }
     */
    public List<MsRun.Spotting.Plate> getPlate() {
      if (plate == null) {
        plate = new ArrayList<MsRun.Spotting.Plate>();
      }
      return this.plate;
    }

    /**
     * Gets the value of the robot property.
     *
     * @return possible object is {@link MsRun.Spotting.Robot }
     */
    public MsRun.Spotting.Robot getRobot() {
      return robot;
    }

    /**
     * Sets the value of the robot property.
     *
     * @param value allowed object is {@link MsRun.Spotting.Robot }
     */
    public void setRobot(MsRun.Spotting.Robot value) {
      this.robot = value;
    }

    /**
     *
Java class for anonymous complex type.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *
     *

     * <complexType>
     *   <complexContent>
     *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       <sequence>
     *         <element name="plateManufacturer" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
     *         <element name="plateModel" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
     *         <element name="pattern" minOccurs="0">
     *           <complexType>
     *             <complexContent>
     *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *                 <sequence>
     *                   <element name="spottingPattern" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
     *                   <element name="orientation">
     *                     <complexType>
     *                       <complexContent>
     *                         <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *                           <attribute name="firstSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
     *                           <attribute name="secondSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
     *                         </restriction>
     *                       </complexContent>
     *                     </complexType>
     *                   </element>
     *                 </sequence>
     *               </restriction>
     *             </complexContent>
     *           </complexType>
     *         </element>
     *         <element name="spot" maxOccurs="unbounded">
     *           <complexType>
     *             <complexContent>
     *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *                 <sequence>
     *                   <element name="maldiMatrix" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
     *                 </sequence>
     *                 <attribute name="spotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
     *                 <attribute name="spotXPosition" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
     *                 <attribute name="spotYPosition" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
     *                 <attribute name="spotDiameter" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
     *               </restriction>
     *             </complexContent>
     *           </complexType>
     *         </element>
     *       </sequence>
     *       <attribute name="plateID" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
     *       <attribute name="spotXCount" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
     *       <attribute name="spotYCount" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
     *     </restriction>
     *   </complexContent>
     * </complexType>
     *

     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "plateManufacturer",
        "plateModel",
        "pattern",
        "spot"
    })
    public static class Plate {

      @XmlElement(required = true)
      protected OntologyEntryType plateManufacturer;
      @XmlElement(required = true)
      protected OntologyEntryType plateModel;
      protected MsRun.Spotting.Plate.Pattern pattern;
      @XmlElement(required = true)
      protected List<MsRun.Spotting.Plate.Spot> spot;
      @XmlAttribute(name = "plateID", required = true)
      @XmlSchemaType(name = "positiveInteger")
      protected BigInteger plateID;
      @XmlAttribute(name = "spotXCount", required = true)
      @XmlSchemaType(name = "positiveInteger")
      protected BigInteger spotXCount;
      @XmlAttribute(name = "spotYCount", required = true)
      @XmlSchemaType(name = "positiveInteger")
      protected BigInteger spotYCount;

      /**
       * Gets the value of the plateManufacturer property.
       *
       * @return possible object is {@link OntologyEntryType }
       */
      public OntologyEntryType getPlateManufacturer() {
        return plateManufacturer;
      }

      /**
       * Sets the value of the plateManufacturer property.
       *
       * @param value allowed object is {@link OntologyEntryType }
       */
      public void setPlateManufacturer(OntologyEntryType value) {
        this.plateManufacturer = value;
      }

      /**
       * Gets the value of the plateModel property.
       *
       * @return possible object is {@link OntologyEntryType }
       */
      public OntologyEntryType getPlateModel() {
        return plateModel;
      }

      /**
       * Sets the value of the plateModel property.
       *
       * @param value allowed object is {@link OntologyEntryType }
       */
      public void setPlateModel(OntologyEntryType value) {
        this.plateModel = value;
      }

      /**
       * Gets the value of the pattern property.
       *
       * @return possible object is {@link MsRun.Spotting.Plate.Pattern }
       */
      public MsRun.Spotting.Plate.Pattern getPattern() {
        return pattern;
      }

      /**
       * Sets the value of the pattern property.
       *
       * @param value allowed object is {@link MsRun.Spotting.Plate.Pattern }
       */
      public void setPattern(MsRun.Spotting.Plate.Pattern value) {
        this.pattern = value;
      }

      /**
       * Gets the value of the spot property.
       *
       *

       * This accessor method returns a reference to the live list, not a snapshot. Therefore any
       * modification you make to the returned list will be present inside the JAXB object. This is
       * why there is not a set method for the spot property.
       *
       *

       * For example, to add a new item, do as follows:
       *

       *    getSpot().add(newItem);
       *

       *
       *
       *

       * Objects of the following type(s) are allowed in the list {@link MsRun.Spotting.Plate.Spot
       * }
       */
      public List<MsRun.Spotting.Plate.Spot> getSpot() {
        if (spot == null) {
          spot = new ArrayList<MsRun.Spotting.Plate.Spot>();
        }
        return this.spot;
      }

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

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

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

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

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

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

      /**
       *
Java class for anonymous complex type.
       *
       *
The following schema fragment specifies the expected content contained within this
       * class.
       *
       *

       * <complexType>
       *   <complexContent>
       *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
       *       <sequence>
       *         <element name="spottingPattern" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
       *         <element name="orientation">
       *           <complexType>
       *             <complexContent>
       *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
       *                 <attribute name="firstSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
       *                 <attribute name="secondSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
       *               </restriction>
       *             </complexContent>
       *           </complexType>
       *         </element>
       *       </sequence>
       *     </restriction>
       *   </complexContent>
       * </complexType>
       *

       */
      @XmlAccessorType(XmlAccessType.FIELD)
      @XmlType(name = "", propOrder = {
          "spottingPattern",
          "orientation"
      })
      public static class Pattern {

        @XmlElement(required = true)
        protected OntologyEntryType spottingPattern;
        @XmlElement(required = true)
        protected MsRun.Spotting.Plate.Pattern.Orientation orientation;

        /**
         * Gets the value of the spottingPattern property.
         *
         * @return possible object is {@link OntologyEntryType }
         */
        public OntologyEntryType getSpottingPattern() {
          return spottingPattern;
        }

        /**
         * Sets the value of the spottingPattern property.
         *
         * @param value allowed object is {@link OntologyEntryType }
         */
        public void setSpottingPattern(OntologyEntryType value) {
          this.spottingPattern = value;
        }

        /**
         * Gets the value of the orientation property.
         *
         * @return possible object is {@link MsRun.Spotting.Plate.Pattern.Orientation }
         */
        public MsRun.Spotting.Plate.Pattern.Orientation getOrientation() {
          return orientation;
        }

        /**
         * Sets the value of the orientation property.
         *
         * @param value allowed object is {@link MsRun.Spotting.Plate.Pattern.Orientation }
         */
        public void setOrientation(MsRun.Spotting.Plate.Pattern.Orientation value) {
          this.orientation = value;
        }

        /**
         *
Java class for anonymous complex type.
         *
         *
The following schema fragment specifies the expected content contained within this
         * class.
         *
         *

         * <complexType>
         *   <complexContent>
         *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
         *       <attribute name="firstSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
         *       <attribute name="secondSpotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
         *     </restriction>
         *   </complexContent>
         * </complexType>
         *

         */
        @XmlAccessorType(XmlAccessType.FIELD)
        @XmlType(name = "")
        public static class Orientation {

          @XmlAttribute(name = "firstSpotID", required = true)
          protected String firstSpotID;
          @XmlAttribute(name = "secondSpotID", required = true)
          protected String secondSpotID;

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

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

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

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

        }

      }

      /**
       *
Java class for anonymous complex type.
       *
       *
The following schema fragment specifies the expected content contained within this
       * class.
       *
       *

       * <complexType>
       *   <complexContent>
       *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
       *       <sequence>
       *         <element name="maldiMatrix" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
       *       </sequence>
       *       <attribute name="spotID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
       *       <attribute name="spotXPosition" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
       *       <attribute name="spotYPosition" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
       *       <attribute name="spotDiameter" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
       *     </restriction>
       *   </complexContent>
       * </complexType>
       *

       */
      @XmlAccessorType(XmlAccessType.FIELD)
      @XmlType(name = "", propOrder = {
          "maldiMatrix"
      })
      public static class Spot {

        @XmlElement(required = true)
        protected OntologyEntryType maldiMatrix;
        @XmlAttribute(name = "spotID", required = true)
        protected String spotID;
        @XmlAttribute(name = "spotXPosition", required = true)
        protected String spotXPosition;
        @XmlAttribute(name = "spotYPosition", required = true)
        protected String spotYPosition;
        @XmlAttribute(name = "spotDiameter")
        @XmlSchemaType(name = "positiveInteger")
        protected BigInteger spotDiameter;

        /**
         * Gets the value of the maldiMatrix property.
         *
         * @return possible object is {@link OntologyEntryType }
         */
        public OntologyEntryType getMaldiMatrix() {
          return maldiMatrix;
        }

        /**
         * Sets the value of the maldiMatrix property.
         *
         * @param value allowed object is {@link OntologyEntryType }
         */
        public void setMaldiMatrix(OntologyEntryType value) {
          this.maldiMatrix = value;
        }

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

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

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

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

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

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

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

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

      }

    }

    /**
     *
Java class for anonymous complex type.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *
     *

     * <complexType>
     *   <complexContent>
     *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       <sequence>
     *         <element name="robotManufacturer" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
     *         <element name="robotModel" type="{http://sashimi.sourceforge.net/schema_revision/mzXML_3.2}ontologyEntryType"/>
     *       </sequence>
     *       <attribute name="timePerSpot" use="required" type="{http://www.w3.org/2001/XMLSchema}duration" />
     *       <attribute name="deadVolume" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
     *     </restriction>
     *   </complexContent>
     * </complexType>
     *

     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "robotManufacturer",
        "robotModel"
    })
    public static class Robot {

      @XmlElement(required = true)
      protected OntologyEntryType robotManufacturer;
      @XmlElement(required = true)
      protected OntologyEntryType robotModel;
      @XmlAttribute(name = "timePerSpot", required = true)
      protected Duration timePerSpot;
      @XmlAttribute(name = "deadVolume")
      @XmlSchemaType(name = "nonNegativeInteger")
      protected BigInteger deadVolume;

      /**
       * Gets the value of the robotManufacturer property.
       *
       * @return possible object is {@link OntologyEntryType }
       */
      public OntologyEntryType getRobotManufacturer() {
        return robotManufacturer;
      }

      /**
       * Sets the value of the robotManufacturer property.
       *
       * @param value allowed object is {@link OntologyEntryType }
       */
      public void setRobotManufacturer(OntologyEntryType value) {
        this.robotManufacturer = value;
      }

      /**
       * Gets the value of the robotModel property.
       *
       * @return possible object is {@link OntologyEntryType }
       */
      public OntologyEntryType getRobotModel() {
        return robotModel;
      }

      /**
       * Sets the value of the robotModel property.
       *
       * @param value allowed object is {@link OntologyEntryType }
       */
      public void setRobotModel(OntologyEntryType value) {
        this.robotModel = value;
      }

      /**
       * Gets the value of the timePerSpot property.
       *
       * @return possible object is {@link Duration }
       */
      public Duration getTimePerSpot() {
        return timePerSpot;
      }

      /**
       * Sets the value of the timePerSpot property.
       *
       * @param value allowed object is {@link Duration }
       */
      public void setTimePerSpot(Duration value) {
        this.timePerSpot = value;
      }

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

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

    }

  }

}


text:
'''
this test suit tests functioning of mraa-gpio commands
mraa-gpio list
mraa-gpio set <pin> <value>
mraa-gpio get <pin>

'''

from oeqa.oetest import oeRuntimeTest
import unittest
import subprocess
import os
from time import sleep

class MraaGpioTest(oeRuntimeTest):
    '''
    These tests require to use BeagleBone as testing host
    '''
    pin = ""

    def setUp(self):

        (status, output) = self.target.run("mraa-gpio version")
        self.assertEqual(status, 0, msg="mraa-gpio version command failed: %s " % output)
        output = output.lower()
        if any(x in output for x in ("broxton", "tuchuck", "joule")):
            self.pin = "51"
        elif "minnowboard" in output:
            self.pin = "25"
        else:
            raise unittest.SkipTest(output)

        if not os.path.exists("/sys/class/gpio/gpio20"):
            subprocess.check_output("echo 20 > /sys/class/gpio/export", shell=True)

    def host_gpio_read(self):
        cmd = "cat /sys/class/gpio/gpio20/value".split()
        output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
        return int(output)

    def host_gpio_write(self, value):
        cmd = 'echo %s > /sys/class/gpio/gpio20/value' % value
        subprocess.check_output(cmd, shell=True)

    def dut_mraa_gpio_get_value(self):
        status, output = self.target.run("mraa-gpio get " + self.pin)
        output = str(output)
        self.assertEqual(status, 0, msg="mraa-gpio get command failed: %s " % output)
        _, string2 = output.split("=")
        return int(string2)

    def test_gpio_cmd_set(self):
        '''
        Test a GPIO pin on and off and check the pin output with
        BeagleBone. DUT GPIO Pin is shorted with BeagleBone to check value for mraa-gpio set
        it is shorted to gpio pin numeber 20 in BeagleBone
        '''

        subprocess.check_output("echo in > /sys/class/gpio/gpio20/direction", shell=True)
        status, output = self.target.run("mraa-gpio set " + self.pin + " 1")
        sleep(1)
        gpio = self.host_gpio_read()
        self.assertEqual(gpio, 1, msg="GPIO pin output is not 1, " +
                                      "mraa output:\n" + output)

        status, output = self.target.run("mraa-gpio set " + self.pin + " 0")
        sleep(1)
        gpio = self.host_gpio_read()
        self.assertEqual(gpio, 0, msg="GPIO pin output is not 0, " +
                                      "mraa output:\n" + output)

        status, output = self.target.run("mraa-gpio set " + self.pin + " 1")
        sleep(1)
        gpio = self.host_gpio_read()
        self.assertEqual(gpio, 1, msg="GPIO pin output is not 1, " +
                                      "mraa output:\n" + output)

    def test_gpio_cmd_list(self):

        (status, output) = self.target.run("mraa-gpio list")
        self.assertEqual(status, 0, msg="mraa-gpio list command failed: %s " % output)

    def test_gpio_cmd_get(self):

        subprocess.check_output("echo out > /sys/class/gpio/gpio20/direction", shell=True)
        self.host_gpio_write(0)
        sleep(1)
        output = self.dut_mraa_gpio_get_value()
        self.assertEqual(output, 0, msg="GPIO value is not 0 ")

        self.host_gpio_write(1)
        sleep(1)
        output = self.dut_mraa_gpio_get_value()
        self.assertEqual(output, 1, msg="GPIO value is not 1 ")

        self.host_gpio_write(0)
        sleep(1)
        output = self.dut_mraa_gpio_get_value()
        self.assertEqual(output, 0, msg="GPIO value is not 0 ")
        subprocess.check_output("echo in > /sys/class/gpio/gpio20/direction", shell=True)

redpajama_set_name: RedPajamaGithub


text:
class ProductsController < ApplicationController
  before_action :set_product, only: [:show, :edit, :update, :destroy]
  load_and_authorize_resource
  respond_to :xlsx, :html, :json

  # GET /products
  # GET /products.json
  def index
    @products = Product.all
  end

  def xls
    @products = Product.all
    respond_to do |format|
      #format.html
      format.xlsx { render xlsx: :xls, filename: "my_items_doc" }
    end
  end

  # GET /products/1
  # GET /products/1.json
  def show
  end

  # GET /products/new
  def new
    @product = Product.new
  end

  # GET /products/1/edit
  def edit
  end

  # POST /products
  # POST /products.json
  def create
    @product = Product.new(product_params)

    respond_to do |format|
      if @product.save
        format.html { redirect_to @product, notice: 'Product was successfully created.' }
        format.json { render :show, status: :created, location: @product }
      else
        format.html { render :new }
        format.json { render json: @product.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /products/1
  # PATCH/PUT /products/1.json
  def update
    respond_to do |format|
      if @product.update(product_params)
        puts "----- byebug -----"
        #byebug
        puts "---------------"
        ActiveSupport::Notifications.instrument "product.update", name: @product.name
        puts "---------------"
        #byebug
        format.html { redirect_to @product, notice: 'Product was successfully updated.' }
        format.json { render :show, status: :ok, location: @product }
      else
        format.html { render :edit }
        format.json { render json: @product.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /products/1
  # DELETE /products/1.json
  def destroy
    @product.destroy
    respond_to do |format|
      format.html { redirect_to products_url, notice: 'Product was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_product
      @product = Product.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def product_params
      params.require(:product).permit(:name, :description, :price, :discount, :tag_list, :category_id)
    end
end


text:
angular.module('cms.shared').factory('shared.userAreaService', [
    '$http',
    '_',
    'shared.serviceBase',
function (
    $http,
    _,
    serviceBase) {

    var service = {},
    userAreaServiceBase = serviceBase + 'user-areas/';

    /* QUERIES */

    service.getAll = function () {
        return $http.get(userAreaServiceBase);
    }

    service.getByCode = function (code) {
        return service
            .getAll()
            .then(function(userAreas) {
                return _.find(userAreas, function(userArea) {
                    return userArea.userAreaCode == code;
                })
            });
    }

    service.getPasswordPolicy = function (code) {
        return $http.get(userAreaServiceBase + code + '/password-policy');
    }

    return service;
}]);


text:
<!DOCTYPE html>

	<meta charset="utf-8">

	<title>NBMTreeClientDelegate Protocol Reference</title>

	<link rel="stylesheet" href="../css/style.css">
	<meta name="viewport" content="initial-scale=1, maximum-scale=1.4">
	<meta name="generator" content="appledoc 2.2.1 (build 1334)">

				KurentoToolbox

				Nubomedia TI

Index

Hierarchy

							On This Page

							<select id="jump-to">
	<option value="top">Jump To…</option>

	<option value="tasks">Tasks</option>

	<optgroup label="Instance Methods">

		<option value="//api/name/client:didFailWithError:">- client:didFailWithError:</option>

		<option value="//api/name/client:iceCandidateReceived:ofSink:tree:">- client:iceCandidateReceived:ofSink:tree:</option>

		<option value="//api/name/client:isConnected:">- client:isConnected:</option>

	</optgroup>

</select>

NBMTreeClientDelegate Protocol Reference

	Conforms to
	NSObject

	Declared in
	NBMTreeClientDelegate.h

– client:isConnected:
required method

- (void)client:(NBMTreeClient *)client isConnected:(BOOL)connected

– client:didFailWithError:
required method

- (void)client:(NBMTreeClient *)client didFailWithError:(NSError *)error

– client:iceCandidateReceived:ofSink:tree:
required method

Event sent when a new ICE candidate is received from Kurento Media Server.

- (void)client:(NBMTreeClient *)client iceCandidateReceived:(RTCICECandidate *)candidate ofSink:(NSString *)sinkId tree:(NSString *)treeId

Parameters

						client

The current NBMTreeClient object.

						candidate

The RTCICECandidate object received.

						sinkId

Sink id to which belongs the candidate, ‘nil’ when the candidate is referred to the tree source.

						treeId

Tree id to which belongs this candidate.

Declared In

NBMTreeClientDelegate.h

Copyright © 2016 Nubomedia TI. All rights reserved. Updated: 2016-02-18

Generated by appledoc 2.2.1 (build 1334).


text:
In this tutorial series, you'll learn how to use DeepChem to solve interesting
and challenging problems in the life sciences. This tutorial series is
continually updated with new DeepChem features and models as implemented and is
designed to be accessible to beginners.

## Why do the DeepChem Tutorial?

**1) Career Advancement:** Applying AI in the life sciences is a booming
industry at present. There are a host of newly funded startups and initiatives
at large pharmaceutical and biotech companies centered around AI. Learning and
mastering DeepChem will bring you to the forefront of this field and will
prepare you to enter a career in this field.

**2) Humanitarian Considerations:** Disease is the oldest cause of human
suffering. From the dawn of human civilization, humans have suffered from pathogens,
cancers, and neurological conditions. One of the greatest achievements of
the last few centuries has been the development of effective treatments for
many diseases. By mastering the skills in this tutorial, you will be able to
stand on the shoulders of the giants of the past to help develop new
medicine.

**3) Lowering the Cost of Medicine:** The art of developing new medicine is
currently an elite skill that can only be practiced by a small core of expert
practitioners. By enabling the growth of open source tools for drug discovery,
you can help democratize these skills and open up drug discovery to more
competition. Increased competition can help drive down the cost of medicine.

## You Will Learn
* [Part 1: The Basic Tools of the Deep Life Sciences](01_The_Basic_Tools_of_the_Deep_Life_Sciences.ipynb)
* [Part 2: Learning MNIST Digit Classifiers](02_Learning_MNIST_Digit_Classifiers.ipynb)
* [Part 3: Modeling Solubility](03_Modeling_Solubility.ipynb)
* [Part 4: Introduction to Graph Convolutions](04_Introduction_to_Graph_Convolutions.ipynb)
* [Part 5: Putting Multitask Learning to Work](05_Putting_Multitask_Learning_to_Work.ipynb)
* [Part 6: Going Deeper on Molecular Featurizations](06_Going_Deeper_on_Molecular_Featurizations.ipynb)
* [Part 7: Uncertainty in Deep Learning](07_Uncertainty_In_Deep_Learning.ipynb)
* [Part 8: Introduction to Model Interpretability](08_Introduction_to_Model_Interpretability.ipynb)
* [Part 9: Creating a high fidelity model from experimental data](09_Creating_a_high_fidelity_model_from_experimental_data.ipynb)
* [Part 10: Exploring Quantum Chemistry with GDB1k](10_Exploring_Quantum_Chemistry_with_GDB1k.ipynb)
* [Part 11: Learning Unsupervised Embeddings for Molecules](11_Learning_Unsupervised_Embeddings_for_Molecules.ipynb)
* [Part 12: Predicting Ki of Ligands to a Protein](12_Predicting_Ki_of_Ligands_to_a_Protein.ipynb)
* [Part 13: Modeling Protein Ligand Interactions](13_Modeling_Protein_Ligand_Interactions.ipynb)
* [Part 14: Modeling Protein Ligand Interactions With Atomic Convolutions](14_Modeling_Protein_Ligand_Interactions_With_Atomic_Convolutions.ipynb)
* [Part 15: Synthetic Feasibility Scoring](15_Synthetic_Feasibility_Scoring.ipynb)
* [Part 16: Conditional Generative Adversarial Networks](16_Conditional_Generative_Adversarial_Networks.ipynb)
* [Part 17: Training a Generative Adversarial Network on MNIST](17_Training_a_Generative_Adversarial_Network_on_MNIST.ipynb)
* [Part 18: Using Reinforcement Learning to Play Pong](18_Using_Reinforcement_Learning_to_Play_Pong.ipynb)
* [Part 19: Large Scale Chemical Screens](19_Large_Scale_Chemical_Screens.ipynb)
* [Part 20: ConvertingDeepChem Models to TensorFlow Estimators](20_Converting_DeepChem_Models_to_TensorFlow_Estimators.ipynb)
* [Part 21: Introduction to Bioinformatics](21_Introduction_to_Bioinformatics.ipynb)
* [Part 22: Using HuggingFace + Transfer Learning for Toxicity Predictions](22_Transfer_Learning_With_HuggingFace_tox21.ipynb)


text:
shopt -s -o pipefail
set -e 		# Exit on error

PKG_NAME="coreutils"
PKG_VERSION="8.23"

TARBALL="${PKG_NAME}-${PKG_VERSION}.tar.xz"
SRC_DIR="${PKG_NAME}-${PKG_VERSION}"

PATCH=${PKG_NAME}-${PKG_VERSION}-uname-1.patch

function showHelp() {
    echo -e "--------------------------------------------------------------------------------------------------------------"
    echo -e "Description: The Coreutils package contains utilities for showing and setting the basic system characteristics"
    echo -e "--------------------------------------------------------------------------------------------------------------"
    echo -e ""
}

function prepare() {
    ln -sv /sources/${TARBALL} ${TARBALL}
    ln -sv /patches/${PATCH} ${PATCH}
}

function unpack() {
    tar xf ${TARBALL}
}

function build() {
    patch -Np1 -i ../${PATCH}

    FORCE_UNSAFE_CONFIGURE=1                            \
    ./configure --prefix=/usr                           \
                --enable-no-install-program=kill,uptime \
                --enable-install-program=hostname       \
                --libexecdir=/usr/lib

    make ${MAKE_PARALLEL}
}

function instal() {
    make ${MAKE_PARALLEL} install

    mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date} /bin
    mv -v /usr/bin/{dd,df,echo,false,hostname,ln,ls,mkdir,mknod} /bin
    mv -v /usr/bin/{pwd,rm,rmdir,sleep,stty,true,uname} /bin
    mv -v /usr/bin/chroot /usr/sbin

    # Workaround
    cp -v /usr/bin/mv /bin
    rm -v /usr/bin/mv
}

function clean() {
    rm -rf ${SRC_DIR} ${TARBALL} ${PATCH}
}

# Run the installation procedure
time { showHelp;clean;prepare;unpack;pushd ${SRC_DIR};build;instal;popd;clean; }
# Verify installation
if [ -f /bin/cat ]; then
    touch ${DONE_DIR_BUILD_SYSTEM}/$(basename $(pwd))
    rm -v ${DONE_DIR_BUILD_SYSTEM}/acl
fi


text:
package co.cask.coopr.client.rest;

import co.cask.coopr.client.AdminClient;
import co.cask.coopr.spec.HardwareType;
import co.cask.coopr.spec.ImageType;
import co.cask.coopr.spec.Provider;
import co.cask.coopr.spec.service.Service;
import co.cask.coopr.spec.template.ClusterTemplate;
import co.cask.coopr.spec.template.PartialTemplate;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.http.impl.client.CloseableHttpClient;

import java.io.IOException;
import java.lang.reflect.Type;
import java.util.List;

/**
 * The {@link co.cask.coopr.client.AdminClient} interface implementation based on the Rest requests to
 * the Coopr Rest API.
 */
public class AdminRestClient extends RestClient implements AdminClient {

  private static final String CLUSTER_TEMPLATES_URL_SUFFIX = "clustertemplates";
  private static final String PARTIAL_TEMPLATES_URL_SUFFIX = "partialtemplates";
  private static final String PROVIDERS_URL_SUFFIX = "providers";
  private static final String SERVICES_URL_SUFFIX = "services";
  private static final String HARDWARE_TYPES_URL_SUFFIX = "hardwaretypes";
  private static final String IMAGE_TYPES_URL_SUFFIX = "imagetypes";
  // Constant types
  private static final Type CLUSTER_TEMPLATES_LIST_TYPE = new TypeToken<List<ClusterTemplate>>() { }.getType();
  private static final Type PARTIAL_TEMPLATES_LIST_TYPE = new TypeToken<List<PartialTemplate>>() { }.getType();
  private static final Type PROVIDERS_LIST_TYPE = new TypeToken<List<Provider>>() { }.getType();
  private static final Type SERVICES_LIST_TYPE = new TypeToken<List<Service>>() { }.getType();
  private static final Type HARDWARE_TYPES_LIST_TYPE = new TypeToken<List<HardwareType>>() { }.getType();
  private static final Type IMAGE_TYPES_LIST_TYPE = new TypeToken<List<ImageType>>() { }.getType();

  public AdminRestClient(RestClientConnectionConfig config, CloseableHttpClient httpClient) {
    super(config, httpClient);
  }

  public AdminRestClient(RestClientConnectionConfig config, CloseableHttpClient httpClient, Gson gson) {
    super(config, httpClient, gson);
  }

  @Override
  public List<ClusterTemplate> getAllClusterTemplates() throws IOException {
    return getAll(CLUSTER_TEMPLATES_URL_SUFFIX, CLUSTER_TEMPLATES_LIST_TYPE);
  }

  @Override
  public ClusterTemplate getClusterTemplate(String name) throws IOException {
    return getSingle(CLUSTER_TEMPLATES_URL_SUFFIX, name, ClusterTemplate.class);
  }

  @Override
  public void deleteClusterTemplate(String name) throws IOException {
    delete(CLUSTER_TEMPLATES_URL_SUFFIX, name);
  }

  @Override
  public List<PartialTemplate> getAllPartialTemplates() throws IOException {
    return getAll(PARTIAL_TEMPLATES_URL_SUFFIX, PARTIAL_TEMPLATES_LIST_TYPE);
  }

  @Override
  public PartialTemplate getPartialTemplate(String name) throws IOException {
    return getSingle(PARTIAL_TEMPLATES_URL_SUFFIX, name, PartialTemplate.class);
  }

  @Override
  public void deletePartialTemplate(String name) throws IOException {
    delete(PARTIAL_TEMPLATES_URL_SUFFIX, name);
  }

  @Override
  public List<Provider> getAllProviders() throws IOException {
    return getAll(PROVIDERS_URL_SUFFIX, PROVIDERS_LIST_TYPE);
  }

  @Override
  public Provider getProvider(String name) throws IOException {
    return getSingle(PROVIDERS_URL_SUFFIX, name, Provider.class);
  }

  @Override
  public void deleteProvider(String name) throws IOException {
    delete(PROVIDERS_URL_SUFFIX, name);
  }

  @Override
  public List<Service> getAllServices() throws IOException {
    return getAll(SERVICES_URL_SUFFIX, SERVICES_LIST_TYPE);
  }

  @Override
  public Service getService(String name) throws IOException {
    return getSingle(SERVICES_URL_SUFFIX, name, Service.class);
  }

  @Override
  public void deleteService(String name) throws IOException {
    delete(SERVICES_URL_SUFFIX, name);
  }

  @Override
  public List<HardwareType> getAllHardwareTypes() throws IOException {
    return getAll(HARDWARE_TYPES_URL_SUFFIX, HARDWARE_TYPES_LIST_TYPE);
  }

  @Override
  public HardwareType getHardwareType(String name) throws IOException {
    return getSingle(HARDWARE_TYPES_URL_SUFFIX, name, HardwareType.class);
  }

  @Override
  public void deleteHardwareType(String name) throws IOException {
    delete(HARDWARE_TYPES_URL_SUFFIX, name);
  }

  @Override
  public List<ImageType> getAllImageTypes() throws IOException {
    return getAll(IMAGE_TYPES_URL_SUFFIX, IMAGE_TYPES_LIST_TYPE);
  }

  @Override
  public ImageType getImageType(String name) throws IOException {
    return getSingle(IMAGE_TYPES_URL_SUFFIX, name, ImageType.class);
  }

  @Override
  public void deleteImageType(String name) throws IOException {
    delete(IMAGE_TYPES_URL_SUFFIX, name);
  }
}


text:
var MongoClient =  require('mongodb').MongoClient;
var config = require('./');
var db;

var _openConnection = function(cb) {
  var connectionString = 'mongodb://'
    + config.get('mongodb_host')
    + ':' + config.get('mongodb_port')
    + '/tests-serverbone';

  MongoClient.connect(connectionString, function(err, database) {
    if (err) {
      return cb(err);
    }
    db = database;
    cb(null, db);
  });
};

exports.connect = function(cb) {
  if (db) return cb(null, db);
  _openConnection(cb);
};