/*
 * XML Type:  X509DataType
 * Namespace: http://www.w3.org/2000/09/xmldsig#
 * Java type: org.w3.x2000.x09.xmldsig.X509DataType
 *
 * Automatically generated - do not modify.
 */
package org.w3.x2000.x09.xmldsig.impl;
/**
 * An XML X509DataType(@http://www.w3.org/2000/09/xmldsig#).
 *
 * This is a complex type.
 */
public class X509DataTypeImpl extends org.apache.xmlbeans.impl.values.XmlComplexContentImpl implements org.w3.x2000.x09.xmldsig.X509DataType
{
    
    public X509DataTypeImpl(org.apache.xmlbeans.SchemaType sType)
    {
        super(sType);
    }
    
    private static final javax.xml.namespace.QName X509ISSUERSERIAL$0 = 
        new javax.xml.namespace.QName("http://www.w3.org/2000/09/xmldsig#", "X509IssuerSerial");
    private static final javax.xml.namespace.QName X509SKI$2 = 
        new javax.xml.namespace.QName("http://www.w3.org/2000/09/xmldsig#", "X509SKI");
    private static final javax.xml.namespace.QName X509SUBJECTNAME$4 = 
        new javax.xml.namespace.QName("http://www.w3.org/2000/09/xmldsig#", "X509SubjectName");
    private static final javax.xml.namespace.QName X509CERTIFICATE$6 = 
        new javax.xml.namespace.QName("http://www.w3.org/2000/09/xmldsig#", "X509Certificate");
    private static final javax.xml.namespace.QName X509CRL$8 = 
        new javax.xml.namespace.QName("http://www.w3.org/2000/09/xmldsig#", "X509CRL");
    
    
    /**
     * Gets a List of "X509IssuerSerial" elements
     */
    public java.util.List<org.w3.x2000.x09.xmldsig.X509IssuerSerialType> getX509IssuerSerialList()
    {
        final class X509IssuerSerialList extends java.util.AbstractList<org.w3.x2000.x09.xmldsig.X509IssuerSerialType>
        {
            public org.w3.x2000.x09.xmldsig.X509IssuerSerialType get(int i)
                { return X509DataTypeImpl.this.getX509IssuerSerialArray(i); }
            
            public org.w3.x2000.x09.xmldsig.X509IssuerSerialType set(int i, org.w3.x2000.x09.xmldsig.X509IssuerSerialType o)
            {
                org.w3.x2000.x09.xmldsig.X509IssuerSerialType old = X509DataTypeImpl.this.getX509IssuerSerialArray(i);
                X509DataTypeImpl.this.setX509IssuerSerialArray(i, o);
                return old;
            }
            
            public void add(int i, org.w3.x2000.x09.xmldsig.X509IssuerSerialType o)
                { X509DataTypeImpl.this.insertNewX509IssuerSerial(i).set(o); }
            
            public org.w3.x2000.x09.xmldsig.X509IssuerSerialType remove(int i)
            {
                org.w3.x2000.x09.xmldsig.X509IssuerSerialType old = X509DataTypeImpl.this.getX509IssuerSerialArray(i);
                X509DataTypeImpl.this.removeX509IssuerSerial(i);
                return old;
            }
            
            public int size()
                { return X509DataTypeImpl.this.sizeOfX509IssuerSerialArray(); }
            
        }
        
        synchronized (monitor())
        {
            check_orphaned();
            return new X509IssuerSerialList();
        }
    }
    
    /**
     * Gets array of all "X509IssuerSerial" elements
     */
    public org.w3.x2000.x09.xmldsig.X509IssuerSerialType[] getX509IssuerSerialArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(X509ISSUERSERIAL$0, targetList);
            org.w3.x2000.x09.xmldsig.X509IssuerSerialType[] result = new org.w3.x2000.x09.xmldsig.X509IssuerSerialType[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets ith "X509IssuerSerial" element
     */
    public org.w3.x2000.x09.xmldsig.X509IssuerSerialType getX509IssuerSerialArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.w3.x2000.x09.xmldsig.X509IssuerSerialType target = null;
            target = (org.w3.x2000.x09.xmldsig.X509IssuerSerialType)get_store().find_element_user(X509ISSUERSERIAL$0, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target;
        }
    }
    
    /**
     * Returns number of "X509IssuerSerial" element
     */
    public int sizeOfX509IssuerSerialArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(X509ISSUERSERIAL$0);
        }
    }
    
    /**
     * Sets array of all "X509IssuerSerial" element
     */
    public void setX509IssuerSerialArray(org.w3.x2000.x09.xmldsig.X509IssuerSerialType[] x509IssuerSerialArray)
    {
        synchronized (monitor())
        {
            check_orphaned();
            arraySetterHelper(x509IssuerSerialArray, X509ISSUERSERIAL$0);
        }
    }
    
    /**
     * Sets ith "X509IssuerSerial" element
     */
    public void setX509IssuerSerialArray(int i, org.w3.x2000.x09.xmldsig.X509IssuerSerialType x509IssuerSerial)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.w3.x2000.x09.xmldsig.X509IssuerSerialType target = null;
            target = (org.w3.x2000.x09.xmldsig.X509IssuerSerialType)get_store().find_element_user(X509ISSUERSERIAL$0, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(x509IssuerSerial);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "X509IssuerSerial" element
     */
    public org.w3.x2000.x09.xmldsig.X509IssuerSerialType insertNewX509IssuerSerial(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.w3.x2000.x09.xmldsig.X509IssuerSerialType target = null;
            target = (org.w3.x2000.x09.xmldsig.X509IssuerSerialType)get_store().insert_element_user(X509ISSUERSERIAL$0, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "X509IssuerSerial" element
     */
    public org.w3.x2000.x09.xmldsig.X509IssuerSerialType addNewX509IssuerSerial()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.w3.x2000.x09.xmldsig.X509IssuerSerialType target = null;
            target = (org.w3.x2000.x09.xmldsig.X509IssuerSerialType)get_store().add_element_user(X509ISSUERSERIAL$0);
            return target;
        }
    }
    
    /**
     * Removes the ith "X509IssuerSerial" element
     */
    public void removeX509IssuerSerial(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(X509ISSUERSERIAL$0, i);
        }
    }
    
    /**
     * Gets a List of "X509SKI" elements
     */
    public java.util.List<byte[]> getX509SKIList()
    {
        final class X509SKIList extends java.util.AbstractList<byte[]>
        {
            public byte[] get(int i)
                { return X509DataTypeImpl.this.getX509SKIArray(i); }
            
            public byte[] set(int i, byte[] o)
            {
                byte[] old = X509DataTypeImpl.this.getX509SKIArray(i);
                X509DataTypeImpl.this.setX509SKIArray(i, o);
                return old;
            }
            
            public void add(int i, byte[] o)
                { X509DataTypeImpl.this.insertX509SKI(i, o); }
            
            public byte[] remove(int i)
            {
                byte[] old = X509DataTypeImpl.this.getX509SKIArray(i);
                X509DataTypeImpl.this.removeX509SKI(i);
                return old;
            }
            
            public int size()
                { return X509DataTypeImpl.this.sizeOfX509SKIArray(); }
            
        }
        
        synchronized (monitor())
        {
            check_orphaned();
            return new X509SKIList();
        }
    }
    
    /**
     * Gets array of all "X509SKI" elements
     */
    public byte[][] getX509SKIArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(X509SKI$2, targetList);
            byte[][] result = new byte[targetList.size()][];
            for (int i = 0, len = targetList.size() ; i < len ; i++)
                result[i] = ((org.apache.xmlbeans.SimpleValue)targetList.get(i)).getByteArrayValue();
            return result;
        }
    }
    
    /**
     * Gets ith "X509SKI" element
     */
    public byte[] getX509SKIArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(X509SKI$2, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target.getByteArrayValue();
        }
    }
    
    /**
     * Gets (as xml) a List of "X509SKI" elements
     */
    public java.util.List<org.apache.xmlbeans.XmlBase64Binary> xgetX509SKIList()
    {
        final class X509SKIList extends java.util.AbstractList<org.apache.xmlbeans.XmlBase64Binary>
        {
            public org.apache.xmlbeans.XmlBase64Binary get(int i)
                { return X509DataTypeImpl.this.xgetX509SKIArray(i); }
            
            public org.apache.xmlbeans.XmlBase64Binary set(int i, org.apache.xmlbeans.XmlBase64Binary o)
            {
                org.apache.xmlbeans.XmlBase64Binary old = X509DataTypeImpl.this.xgetX509SKIArray(i);
                X509DataTypeImpl.this.xsetX509SKIArray(i, o);
                return old;
            }
            
            public void add(int i, org.apache.xmlbeans.XmlBase64Binary o)
                { X509DataTypeImpl.this.insertNewX509SKI(i).set(o); }
            
            public org.apache.xmlbeans.XmlBase64Binary remove(int i)
            {
                org.apache.xmlbeans.XmlBase64Binary old = X509DataTypeImpl.this.xgetX509SKIArray(i);
                X509DataTypeImpl.this.removeX509SKI(i);
                return old;
            }
            
            public int size()
                { return X509DataTypeImpl.this.sizeOfX509SKIArray(); }
            
        }
        
        synchronized (monitor())
        {
            check_orphaned();
            return new X509SKIList();
        }
    }
    
    /**
     * Gets (as xml) array of all "X509SKI" elements
     */
    public org.apache.xmlbeans.XmlBase64Binary[] xgetX509SKIArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(X509SKI$2, targetList);
            org.apache.xmlbeans.XmlBase64Binary[] result = new org.apache.xmlbeans.XmlBase64Binary[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets (as xml) ith "X509SKI" element
     */
    public org.apache.xmlbeans.XmlBase64Binary xgetX509SKIArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().find_element_user(X509SKI$2, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return (org.apache.xmlbeans.XmlBase64Binary)target;
        }
    }
    
    /**
     * Returns number of "X509SKI" element
     */
    public int sizeOfX509SKIArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(X509SKI$2);
        }
    }
    
    /**
     * Sets array of all "X509SKI" element
     */
    public void setX509SKIArray(byte[][] x509SKIArray)
    {
        synchronized (monitor())
        {
            check_orphaned();
            arraySetterHelper(x509SKIArray, X509SKI$2);
        }
    }
    
    /**
     * Sets ith "X509SKI" element
     */
    public void setX509SKIArray(int i, byte[] x509SKI)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(X509SKI$2, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.setByteArrayValue(x509SKI);
        }
    }
    
    /**
     * Sets (as xml) array of all "X509SKI" element
     */
    public void xsetX509SKIArray(org.apache.xmlbeans.XmlBase64Binary[]x509SKIArray)
    {
        synchronized (monitor())
        {
            check_orphaned();
            arraySetterHelper(x509SKIArray, X509SKI$2);
        }
    }
    
    /**
     * Sets (as xml) ith "X509SKI" element
     */
    public void xsetX509SKIArray(int i, org.apache.xmlbeans.XmlBase64Binary x509SKI)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().find_element_user(X509SKI$2, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(x509SKI);
        }
    }
    
    /**
     * Inserts the value as the ith "X509SKI" element
     */
    public void insertX509SKI(int i, byte[] x509SKI)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = 
                (org.apache.xmlbeans.SimpleValue)get_store().insert_element_user(X509SKI$2, i);
            target.setByteArrayValue(x509SKI);
        }
    }
    
    /**
     * Appends the value as the last "X509SKI" element
     */
    public void addX509SKI(byte[] x509SKI)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().add_element_user(X509SKI$2);
            target.setByteArrayValue(x509SKI);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "X509SKI" element
     */
    public org.apache.xmlbeans.XmlBase64Binary insertNewX509SKI(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().insert_element_user(X509SKI$2, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "X509SKI" element
     */
    public org.apache.xmlbeans.XmlBase64Binary addNewX509SKI()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().add_element_user(X509SKI$2);
            return target;
        }
    }
    
    /**
     * Removes the ith "X509SKI" element
     */
    public void removeX509SKI(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(X509SKI$2, i);
        }
    }
    
    /**
     * Gets a List of "X509SubjectName" elements
     */
    public java.util.List<java.lang.String> getX509SubjectNameList()
    {
        final class X509SubjectNameList extends java.util.AbstractList<java.lang.String>
        {
            public java.lang.String get(int i)
                { return X509DataTypeImpl.this.getX509SubjectNameArray(i); }
            
            public java.lang.String set(int i, java.lang.String o)
            {
                java.lang.String old = X509DataTypeImpl.this.getX509SubjectNameArray(i);
                X509DataTypeImpl.this.setX509SubjectNameArray(i, o);
                return old;
            }
            
            public void add(int i, java.lang.String o)
                { X509DataTypeImpl.this.insertX509SubjectName(i, o); }
            
            public java.lang.String remove(int i)
            {
                java.lang.String old = X509DataTypeImpl.this.getX509SubjectNameArray(i);
                X509DataTypeImpl.this.removeX509SubjectName(i);
                return old;
            }
            
            public int size()
                { return X509DataTypeImpl.this.sizeOfX509SubjectNameArray(); }
            
        }
        
        synchronized (monitor())
        {
            check_orphaned();
            return new X509SubjectNameList();
        }
    }
    
    /**
     * Gets array of all "X509SubjectName" elements
     */
    public java.lang.String[] getX509SubjectNameArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(X509SUBJECTNAME$4, targetList);
            java.lang.String[] result = new java.lang.String[targetList.size()];
            for (int i = 0, len = targetList.size() ; i < len ; i++)
                result[i] = ((org.apache.xmlbeans.SimpleValue)targetList.get(i)).getStringValue();
            return result;
        }
    }
    
    /**
     * Gets ith "X509SubjectName" element
     */
    public java.lang.String getX509SubjectNameArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(X509SUBJECTNAME$4, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target.getStringValue();
        }
    }
    
    /**
     * Gets (as xml) a List of "X509SubjectName" elements
     */
    public java.util.List<org.apache.xmlbeans.XmlString> xgetX509SubjectNameList()
    {
        final class X509SubjectNameList extends java.util.AbstractList<org.apache.xmlbeans.XmlString>
        {
            public org.apache.xmlbeans.XmlString get(int i)
                { return X509DataTypeImpl.this.xgetX509SubjectNameArray(i); }
            
            public org.apache.xmlbeans.XmlString set(int i, org.apache.xmlbeans.XmlString o)
            {
                org.apache.xmlbeans.XmlString old = X509DataTypeImpl.this.xgetX509SubjectNameArray(i);
                X509DataTypeImpl.this.xsetX509SubjectNameArray(i, o);
                return old;
            }
            
            public void add(int i, org.apache.xmlbeans.XmlString o)
                { X509DataTypeImpl.this.insertNewX509SubjectName(i).set(o); }
            
            public org.apache.xmlbeans.XmlString remove(int i)
            {
                org.apache.xmlbeans.XmlString old = X509DataTypeImpl.this.xgetX509SubjectNameArray(i);
                X509DataTypeImpl.this.removeX509SubjectName(i);
                return old;
            }
            
            public int size()
                { return X509DataTypeImpl.this.sizeOfX509SubjectNameArray(); }
            
        }
        
        synchronized (monitor())
        {
            check_orphaned();
            return new X509SubjectNameList();
        }
    }
    
    /**
     * Gets (as xml) array of all "X509SubjectName" elements
     */
    public org.apache.xmlbeans.XmlString[] xgetX509SubjectNameArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(X509SUBJECTNAME$4, targetList);
            org.apache.xmlbeans.XmlString[] result = new org.apache.xmlbeans.XmlString[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets (as xml) ith "X509SubjectName" element
     */
    public org.apache.xmlbeans.XmlString xgetX509SubjectNameArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_element_user(X509SUBJECTNAME$4, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return (org.apache.xmlbeans.XmlString)target;
        }
    }
    
    /**
     * Returns number of "X509SubjectName" element
     */
    public int sizeOfX509SubjectNameArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(X509SUBJECTNAME$4);
        }
    }
    
    /**
     * Sets array of all "X509SubjectName" element
     */
    public void setX509SubjectNameArray(java.lang.String[] x509SubjectNameArray)
    {
        synchronized (monitor())
        {
            check_orphaned();
            arraySetterHelper(x509SubjectNameArray, X509SUBJECTNAME$4);
        }
    }
    
    /**
     * Sets ith "X509SubjectName" element
     */
    public void setX509SubjectNameArray(int i, java.lang.String x509SubjectName)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(X509SUBJECTNAME$4, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.setStringValue(x509SubjectName);
        }
    }
    
    /**
     * Sets (as xml) array of all "X509SubjectName" element
     */
    public void xsetX509SubjectNameArray(org.apache.xmlbeans.XmlString[]x509SubjectNameArray)
    {
        synchronized (monitor())
        {
            check_orphaned();
            arraySetterHelper(x509SubjectNameArray, X509SUBJECTNAME$4);
        }
    }
    
    /**
     * Sets (as xml) ith "X509SubjectName" element
     */
    public void xsetX509SubjectNameArray(int i, org.apache.xmlbeans.XmlString x509SubjectName)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_element_user(X509SUBJECTNAME$4, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(x509SubjectName);
        }
    }
    
    /**
     * Inserts the value as the ith "X509SubjectName" element
     */
    public void insertX509SubjectName(int i, java.lang.String x509SubjectName)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = 
                (org.apache.xmlbeans.SimpleValue)get_store().insert_element_user(X509SUBJECTNAME$4, i);
            target.setStringValue(x509SubjectName);
        }
    }
    
    /**
     * Appends the value as the last "X509SubjectName" element
     */
    public void addX509SubjectName(java.lang.String x509SubjectName)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().add_element_user(X509SUBJECTNAME$4);
            target.setStringValue(x509SubjectName);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "X509SubjectName" element
     */
    public org.apache.xmlbeans.XmlString insertNewX509SubjectName(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().insert_element_user(X509SUBJECTNAME$4, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "X509SubjectName" element
     */
    public org.apache.xmlbeans.XmlString addNewX509SubjectName()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().add_element_user(X509SUBJECTNAME$4);
            return target;
        }
    }
    
    /**
     * Removes the ith "X509SubjectName" element
     */
    public void removeX509SubjectName(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(X509SUBJECTNAME$4, i);
        }
    }
    
    /**
     * Gets a List of "X509Certificate" elements
     */
    public java.util.List<byte[]> getX509CertificateList()
    {
        final class X509CertificateList extends java.util.AbstractList<byte[]>
        {
            public byte[] get(int i)
                { return X509DataTypeImpl.this.getX509CertificateArray(i); }
            
            public byte[] set(int i, byte[] o)
            {
                byte[] old = X509DataTypeImpl.this.getX509CertificateArray(i);
                X509DataTypeImpl.this.setX509CertificateArray(i, o);
                return old;
            }
            
            public void add(int i, byte[] o)
                { X509DataTypeImpl.this.insertX509Certificate(i, o); }
            
            public byte[] remove(int i)
            {
                byte[] old = X509DataTypeImpl.this.getX509CertificateArray(i);
                X509DataTypeImpl.this.removeX509Certificate(i);
                return old;
            }
            
            public int size()
                { return X509DataTypeImpl.this.sizeOfX509CertificateArray(); }
            
        }
        
        synchronized (monitor())
        {
            check_orphaned();
            return new X509CertificateList();
        }
    }
    
    /**
     * Gets array of all "X509Certificate" elements
     */
    public byte[][] getX509CertificateArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(X509CERTIFICATE$6, targetList);
            byte[][] result = new byte[targetList.size()][];
            for (int i = 0, len = targetList.size() ; i < len ; i++)
                result[i] = ((org.apache.xmlbeans.SimpleValue)targetList.get(i)).getByteArrayValue();
            return result;
        }
    }
    
    /**
     * Gets ith "X509Certificate" element
     */
    public byte[] getX509CertificateArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(X509CERTIFICATE$6, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target.getByteArrayValue();
        }
    }
    
    /**
     * Gets (as xml) a List of "X509Certificate" elements
     */
    public java.util.List<org.apache.xmlbeans.XmlBase64Binary> xgetX509CertificateList()
    {
        final class X509CertificateList extends java.util.AbstractList<org.apache.xmlbeans.XmlBase64Binary>
        {
            public org.apache.xmlbeans.XmlBase64Binary get(int i)
                { return X509DataTypeImpl.this.xgetX509CertificateArray(i); }
            
            public org.apache.xmlbeans.XmlBase64Binary set(int i, org.apache.xmlbeans.XmlBase64Binary o)
            {
                org.apache.xmlbeans.XmlBase64Binary old = X509DataTypeImpl.this.xgetX509CertificateArray(i);
                X509DataTypeImpl.this.xsetX509CertificateArray(i, o);
                return old;
            }
            
            public void add(int i, org.apache.xmlbeans.XmlBase64Binary o)
                { X509DataTypeImpl.this.insertNewX509Certificate(i).set(o); }
            
            public org.apache.xmlbeans.XmlBase64Binary remove(int i)
            {
                org.apache.xmlbeans.XmlBase64Binary old = X509DataTypeImpl.this.xgetX509CertificateArray(i);
                X509DataTypeImpl.this.removeX509Certificate(i);
                return old;
            }
            
            public int size()
                { return X509DataTypeImpl.this.sizeOfX509CertificateArray(); }
            
        }
        
        synchronized (monitor())
        {
            check_orphaned();
            return new X509CertificateList();
        }
    }
    
    /**
     * Gets (as xml) array of all "X509Certificate" elements
     */
    public org.apache.xmlbeans.XmlBase64Binary[] xgetX509CertificateArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(X509CERTIFICATE$6, targetList);
            org.apache.xmlbeans.XmlBase64Binary[] result = new org.apache.xmlbeans.XmlBase64Binary[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets (as xml) ith "X509Certificate" element
     */
    public org.apache.xmlbeans.XmlBase64Binary xgetX509CertificateArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().find_element_user(X509CERTIFICATE$6, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return (org.apache.xmlbeans.XmlBase64Binary)target;
        }
    }
    
    /**
     * Returns number of "X509Certificate" element
     */
    public int sizeOfX509CertificateArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(X509CERTIFICATE$6);
        }
    }
    
    /**
     * Sets array of all "X509Certificate" element
     */
    public void setX509CertificateArray(byte[][] x509CertificateArray)
    {
        synchronized (monitor())
        {
            check_orphaned();
            arraySetterHelper(x509CertificateArray, X509CERTIFICATE$6);
        }
    }
    
    /**
     * Sets ith "X509Certificate" element
     */
    public void setX509CertificateArray(int i, byte[] x509Certificate)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(X509CERTIFICATE$6, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.setByteArrayValue(x509Certificate);
        }
    }
    
    /**
     * Sets (as xml) array of all "X509Certificate" element
     */
    public void xsetX509CertificateArray(org.apache.xmlbeans.XmlBase64Binary[]x509CertificateArray)
    {
        synchronized (monitor())
        {
            check_orphaned();
            arraySetterHelper(x509CertificateArray, X509CERTIFICATE$6);
        }
    }
    
    /**
     * Sets (as xml) ith "X509Certificate" element
     */
    public void xsetX509CertificateArray(int i, org.apache.xmlbeans.XmlBase64Binary x509Certificate)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().find_element_user(X509CERTIFICATE$6, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(x509Certificate);
        }
    }
    
    /**
     * Inserts the value as the ith "X509Certificate" element
     */
    public void insertX509Certificate(int i, byte[] x509Certificate)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = 
                (org.apache.xmlbeans.SimpleValue)get_store().insert_element_user(X509CERTIFICATE$6, i);
            target.setByteArrayValue(x509Certificate);
        }
    }
    
    /**
     * Appends the value as the last "X509Certificate" element
     */
    public void addX509Certificate(byte[] x509Certificate)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().add_element_user(X509CERTIFICATE$6);
            target.setByteArrayValue(x509Certificate);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "X509Certificate" element
     */
    public org.apache.xmlbeans.XmlBase64Binary insertNewX509Certificate(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().insert_element_user(X509CERTIFICATE$6, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "X509Certificate" element
     */
    public org.apache.xmlbeans.XmlBase64Binary addNewX509Certificate()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().add_element_user(X509CERTIFICATE$6);
            return target;
        }
    }
    
    /**
     * Removes the ith "X509Certificate" element
     */
    public void removeX509Certificate(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(X509CERTIFICATE$6, i);
        }
    }
    
    /**
     * Gets a List of "X509CRL" elements
     */
    public java.util.List<byte[]> getX509CRLList()
    {
        final class X509CRLList extends java.util.AbstractList<byte[]>
        {
            public byte[] get(int i)
                { return X509DataTypeImpl.this.getX509CRLArray(i); }
            
            public byte[] set(int i, byte[] o)
            {
                byte[] old = X509DataTypeImpl.this.getX509CRLArray(i);
                X509DataTypeImpl.this.setX509CRLArray(i, o);
                return old;
            }
            
            public void add(int i, byte[] o)
                { X509DataTypeImpl.this.insertX509CRL(i, o); }
            
            public byte[] remove(int i)
            {
                byte[] old = X509DataTypeImpl.this.getX509CRLArray(i);
                X509DataTypeImpl.this.removeX509CRL(i);
                return old;
            }
            
            public int size()
                { return X509DataTypeImpl.this.sizeOfX509CRLArray(); }
            
        }
        
        synchronized (monitor())
        {
            check_orphaned();
            return new X509CRLList();
        }
    }
    
    /**
     * Gets array of all "X509CRL" elements
     */
    public byte[][] getX509CRLArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(X509CRL$8, targetList);
            byte[][] result = new byte[targetList.size()][];
            for (int i = 0, len = targetList.size() ; i < len ; i++)
                result[i] = ((org.apache.xmlbeans.SimpleValue)targetList.get(i)).getByteArrayValue();
            return result;
        }
    }
    
    /**
     * Gets ith "X509CRL" element
     */
    public byte[] getX509CRLArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(X509CRL$8, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target.getByteArrayValue();
        }
    }
    
    /**
     * Gets (as xml) a List of "X509CRL" elements
     */
    public java.util.List<org.apache.xmlbeans.XmlBase64Binary> xgetX509CRLList()
    {
        final class X509CRLList extends java.util.AbstractList<org.apache.xmlbeans.XmlBase64Binary>
        {
            public org.apache.xmlbeans.XmlBase64Binary get(int i)
                { return X509DataTypeImpl.this.xgetX509CRLArray(i); }
            
            public org.apache.xmlbeans.XmlBase64Binary set(int i, org.apache.xmlbeans.XmlBase64Binary o)
            {
                org.apache.xmlbeans.XmlBase64Binary old = X509DataTypeImpl.this.xgetX509CRLArray(i);
                X509DataTypeImpl.this.xsetX509CRLArray(i, o);
                return old;
            }
            
            public void add(int i, org.apache.xmlbeans.XmlBase64Binary o)
                { X509DataTypeImpl.this.insertNewX509CRL(i).set(o); }
            
            public org.apache.xmlbeans.XmlBase64Binary remove(int i)
            {
                org.apache.xmlbeans.XmlBase64Binary old = X509DataTypeImpl.this.xgetX509CRLArray(i);
                X509DataTypeImpl.this.removeX509CRL(i);
                return old;
            }
            
            public int size()
                { return X509DataTypeImpl.this.sizeOfX509CRLArray(); }
            
        }
        
        synchronized (monitor())
        {
            check_orphaned();
            return new X509CRLList();
        }
    }
    
    /**
     * Gets (as xml) array of all "X509CRL" elements
     */
    public org.apache.xmlbeans.XmlBase64Binary[] xgetX509CRLArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(X509CRL$8, targetList);
            org.apache.xmlbeans.XmlBase64Binary[] result = new org.apache.xmlbeans.XmlBase64Binary[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets (as xml) ith "X509CRL" element
     */
    public org.apache.xmlbeans.XmlBase64Binary xgetX509CRLArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().find_element_user(X509CRL$8, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return (org.apache.xmlbeans.XmlBase64Binary)target;
        }
    }
    
    /**
     * Returns number of "X509CRL" element
     */
    public int sizeOfX509CRLArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(X509CRL$8);
        }
    }
    
    /**
     * Sets array of all "X509CRL" element
     */
    public void setX509CRLArray(byte[][] x509CRLArray)
    {
        synchronized (monitor())
        {
            check_orphaned();
            arraySetterHelper(x509CRLArray, X509CRL$8);
        }
    }
    
    /**
     * Sets ith "X509CRL" element
     */
    public void setX509CRLArray(int i, byte[] x509CRL)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(X509CRL$8, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.setByteArrayValue(x509CRL);
        }
    }
    
    /**
     * Sets (as xml) array of all "X509CRL" element
     */
    public void xsetX509CRLArray(org.apache.xmlbeans.XmlBase64Binary[]x509CRLArray)
    {
        synchronized (monitor())
        {
            check_orphaned();
            arraySetterHelper(x509CRLArray, X509CRL$8);
        }
    }
    
    /**
     * Sets (as xml) ith "X509CRL" element
     */
    public void xsetX509CRLArray(int i, org.apache.xmlbeans.XmlBase64Binary x509CRL)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().find_element_user(X509CRL$8, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(x509CRL);
        }
    }
    
    /**
     * Inserts the value as the ith "X509CRL" element
     */
    public void insertX509CRL(int i, byte[] x509CRL)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = 
                (org.apache.xmlbeans.SimpleValue)get_store().insert_element_user(X509CRL$8, i);
            target.setByteArrayValue(x509CRL);
        }
    }
    
    /**
     * Appends the value as the last "X509CRL" element
     */
    public void addX509CRL(byte[] x509CRL)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().add_element_user(X509CRL$8);
            target.setByteArrayValue(x509CRL);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "X509CRL" element
     */
    public org.apache.xmlbeans.XmlBase64Binary insertNewX509CRL(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().insert_element_user(X509CRL$8, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "X509CRL" element
     */
    public org.apache.xmlbeans.XmlBase64Binary addNewX509CRL()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlBase64Binary target = null;
            target = (org.apache.xmlbeans.XmlBase64Binary)get_store().add_element_user(X509CRL$8);
            return target;
        }
    }
    
    /**
     * Removes the ith "X509CRL" element
     */
    public void removeX509CRL(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(X509CRL$8, i);
        }
    }
}
