
package gov.niem.niem.domains.jxdm._4;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
import gov.niem.niem.fbi._2.OFFCodeType;
import gov.niem.niem.niem_core._2.IdentificationType;
import gov.niem.niem.niem_core._2.StatusType;
import gov.niem.niem.niem_core._2.TextType;
import gov.niem.niem.structures._2.ComplexObjectType;


/**
 * <p>Java class for ChargeType complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="ChargeType">
 *   &lt;complexContent>
 *     &lt;extension base="{http://niem.gov/niem/structures/2.0}ComplexObjectType">
 *       &lt;sequence>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeApplicabilityText" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeDescriptionText" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeDisposition" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeIdentification" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeNCICCode" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeQualifierText" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeSanction" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeSequenceID" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeSeverityText" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeStatus" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeStatute" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeText" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element ref="{http://niem.gov/niem/domains/jxdm/4.0}ChargeTrackingIdentification" maxOccurs="unbounded" minOccurs="0"/>
 *       &lt;/sequence>
 *     &lt;/extension>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ChargeType", propOrder = {
    "chargeApplicabilityText",
    "chargeDescriptionText",
    "chargeDisposition",
    "chargeIdentification",
    "chargeNCICCode",
    "chargeQualifierText",
    "chargeSanction",
    "chargeSequenceID",
    "chargeSeverityText",
    "chargeStatus",
    "chargeStatute",
    "chargeText",
    "chargeTrackingIdentification"
})
@XmlSeeAlso({
    org.ncsconline.reference.arrestwarrantextension._2.ChargeType.class
})
public class ChargeType
    extends ComplexObjectType
{

    @XmlElement(name = "ChargeApplicabilityText", nillable = true)
    protected List<TextType> chargeApplicabilityText;
    @XmlElement(name = "ChargeDescriptionText", nillable = true)
    protected List<TextType> chargeDescriptionText;
    @XmlElement(name = "ChargeDisposition", nillable = true)
    protected List<ChargeDispositionType> chargeDisposition;
    @XmlElement(name = "ChargeIdentification", nillable = true)
    protected List<IdentificationType> chargeIdentification;
    @XmlElement(name = "ChargeNCICCode", nillable = true)
    protected List<OFFCodeType> chargeNCICCode;
    @XmlElement(name = "ChargeQualifierText", nillable = true)
    protected List<TextType> chargeQualifierText;
    @XmlElement(name = "ChargeSanction", nillable = true)
    protected List<SanctionType> chargeSanction;
    @XmlElement(name = "ChargeSequenceID", nillable = true)
    protected List<IdentificationType> chargeSequenceID;
    @XmlElement(name = "ChargeSeverityText", nillable = true)
    protected List<TextType> chargeSeverityText;
    @XmlElement(name = "ChargeStatus", nillable = true)
    protected List<StatusType> chargeStatus;
    @XmlElement(name = "ChargeStatute", nillable = true)
    protected List<StatuteType> chargeStatute;
    @XmlElement(name = "ChargeText", nillable = true)
    protected List<TextType> chargeText;
    @XmlElement(name = "ChargeTrackingIdentification", nillable = true)
    protected List<IdentificationType> chargeTrackingIdentification;

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

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

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

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

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

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

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

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

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

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

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

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

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

}
