//
// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
// See https://eclipse-ee4j.github.io/jaxb-ri 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2021.08.30 at 11:05:22 AM BST 
//

package jalview.xml.binding.jalview;

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.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

/**
 * &lt;p&gt;Java class for anonymous complex type.
 * 
 * &lt;p&gt;The following schema fragment specifies the expected content
 * contained within this class.
 * 
 * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
 * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
 * &amp;lt;sequence&amp;gt; &amp;lt;element
 * ref="{www.vamsas.ac.uk/jalview/version2}Sequence" maxOccurs="unbounded"
 * minOccurs="0"/&amp;gt; &amp;lt;element
 * ref="{www.vamsas.ac.uk/jalview/version2}Annotation" maxOccurs="unbounded"
 * minOccurs="0"/&amp;gt; &amp;lt;element name="sequenceSetProperties"
 * maxOccurs="unbounded" minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
 * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
 * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
 * name="key" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
 * &amp;lt;attribute name="value"
 * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
 * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
 * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
 * ref="{www.vamsas.ac.uk/jalview/version2}AlcodonFrame" maxOccurs="unbounded"
 * minOccurs="0"/&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;attribute
 * name="gapChar" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
 * /&amp;gt; &amp;lt;attribute name="datasetId"
 * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
 * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
 * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
  name = "",
  propOrder =
  { "sequence", "annotation", "sequenceSetProperties", "alcodonFrame" })
@XmlRootElement(name = "SequenceSet")
public class SequenceSet
{

  @XmlElement(name = "Sequence")
  protected List<Sequence> sequence;

  @XmlElement(name = "Annotation")
  protected List<Annotation> annotation;

  protected List<SequenceSet.SequenceSetProperties> sequenceSetProperties;

  @XmlElement(name = "AlcodonFrame")
  protected List<AlcodonFrame> alcodonFrame;

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

  @XmlAttribute(name = "datasetId")
  protected String datasetId;

  /**
   * Gets the value of the sequence property.
   * 
   * &lt;p&gt; 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
   * &lt;CODE&gt;set&lt;/CODE&gt; method for the sequence property.
   * 
   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
   * getSequence().add(newItem); &lt;/pre&gt;
   * 
   * 
   * &lt;p&gt; Objects of the following type(s) are allowed in the list
   * {@link Sequence }
   * 
   * 
   */
  public List<Sequence> getSequence()
  {
    if (sequence == null)
    {
      sequence = new ArrayList<Sequence>();
    }
    return this.sequence;
  }

  /**
   * Gets the value of the annotation property.
   * 
   * &lt;p&gt; 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
   * &lt;CODE&gt;set&lt;/CODE&gt; method for the annotation property.
   * 
   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
   * getAnnotation().add(newItem); &lt;/pre&gt;
   * 
   * 
   * &lt;p&gt; Objects of the following type(s) are allowed in the list
   * {@link Annotation }
   * 
   * 
   */
  public List<Annotation> getAnnotation()
  {
    if (annotation == null)
    {
      annotation = new ArrayList<Annotation>();
    }
    return this.annotation;
  }

  /**
   * Gets the value of the sequenceSetProperties property.
   * 
   * &lt;p&gt; 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
   * &lt;CODE&gt;set&lt;/CODE&gt; method for the sequenceSetProperties property.
   * 
   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
   * getSequenceSetProperties().add(newItem); &lt;/pre&gt;
   * 
   * 
   * &lt;p&gt; Objects of the following type(s) are allowed in the list
   * {@link SequenceSet.SequenceSetProperties }
   * 
   * 
   */
  public List<SequenceSet.SequenceSetProperties> getSequenceSetProperties()
  {
    if (sequenceSetProperties == null)
    {
      sequenceSetProperties = new ArrayList<SequenceSet.SequenceSetProperties>();
    }
    return this.sequenceSetProperties;
  }

  /**
   * Gets the value of the alcodonFrame property.
   * 
   * &lt;p&gt; 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
   * &lt;CODE&gt;set&lt;/CODE&gt; method for the alcodonFrame property.
   * 
   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
   * getAlcodonFrame().add(newItem); &lt;/pre&gt;
   * 
   * 
   * &lt;p&gt; Objects of the following type(s) are allowed in the list
   * {@link AlcodonFrame }
   * 
   * 
   */
  public List<AlcodonFrame> getAlcodonFrame()
  {
    if (alcodonFrame == null)
    {
      alcodonFrame = new ArrayList<AlcodonFrame>();
    }
    return this.alcodonFrame;
  }

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

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

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

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

  /**
   * &lt;p&gt;Java class for anonymous complex type.
   * 
   * &lt;p&gt;The following schema fragment specifies the expected content
   * contained within this class.
   * 
   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
   * &amp;lt;restriction
   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
   * name="key" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
   * &amp;lt;attribute name="value"
   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
   * 
   * 
   */
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "")
  public static class SequenceSetProperties
  {

    @XmlAttribute(name = "key")
    protected String key;

    @XmlAttribute(name = "value")
    protected String value;

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

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

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

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

  }

}
