001    //
002    // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-2 
003    // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
004    // Any modifications to this file will be lost upon recompilation of the source schema. 
005    // Generated on: 2012.05.23 at 02:54:23 AM CEST 
006    //
007    
008    
009    package org.jomc.tools.model;
010    
011    import java.io.ByteArrayInputStream;
012    import java.io.ByteArrayOutputStream;
013    import java.io.File;
014    import java.io.IOException;
015    import java.io.InvalidClassException;
016    import java.io.NotSerializableException;
017    import java.io.ObjectInputStream;
018    import java.io.ObjectOutputStream;
019    import java.io.OptionalDataException;
020    import java.io.Serializable;
021    import java.io.StreamCorruptedException;
022    import java.lang.reflect.Array;
023    import java.lang.reflect.InvocationTargetException;
024    import java.math.BigDecimal;
025    import java.math.BigInteger;
026    import java.net.MalformedURLException;
027    import java.net.URI;
028    import java.net.URISyntaxException;
029    import java.net.URL;
030    import java.util.ArrayList;
031    import java.util.Calendar;
032    import java.util.Currency;
033    import java.util.Date;
034    import java.util.Iterator;
035    import java.util.List;
036    import java.util.Locale;
037    import java.util.TimeZone;
038    import java.util.UUID;
039    import javax.activation.MimeType;
040    import javax.activation.MimeTypeParseException;
041    import javax.annotation.Generated;
042    import javax.xml.bind.JAXBElement;
043    import javax.xml.bind.annotation.XmlAccessType;
044    import javax.xml.bind.annotation.XmlAccessorType;
045    import javax.xml.bind.annotation.XmlAnyElement;
046    import javax.xml.bind.annotation.XmlAttribute;
047    import javax.xml.bind.annotation.XmlElement;
048    import javax.xml.bind.annotation.XmlType;
049    import javax.xml.datatype.Duration;
050    import javax.xml.datatype.XMLGregorianCalendar;
051    import javax.xml.namespace.QName;
052    import org.w3c.dom.Element;
053    
054    
055    /**
056     * Model of a source code file section.
057     * 
058     * <p>Java class for SourceSectionType complex type.
059     * 
060     * <p>The following schema fragment specifies the expected content contained within this class.
061     * 
062     * <pre>
063     * &lt;complexType name="SourceSectionType">
064     *   &lt;complexContent>
065     *     &lt;extension base="{http://jomc.org/tools/model}ToolsType">
066     *       &lt;sequence>
067     *         &lt;element ref="{http://jomc.org/tools/model}source-sections" minOccurs="0"/>
068     *         &lt;any processContents='lax' namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
069     *       &lt;/sequence>
070     *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
071     *       &lt;attribute name="head-template" type="{http://www.w3.org/2001/XMLSchema}string" />
072     *       &lt;attribute name="tail-template" type="{http://www.w3.org/2001/XMLSchema}string" />
073     *       &lt;attribute name="indentationLevel" type="{http://www.w3.org/2001/XMLSchema}int" default="0" />
074     *       &lt;attribute name="optional" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
075     *       &lt;attribute name="editable" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
076     *     &lt;/extension>
077     *   &lt;/complexContent>
078     * &lt;/complexType>
079     * </pre>
080     * 
081     * 
082     */
083    @XmlAccessorType(XmlAccessType.FIELD)
084    @XmlType(name = "SourceSectionType", namespace = "http://jomc.org/tools/model", propOrder = {
085        "sourceSections",
086        "any"
087    })
088    @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
089    public class SourceSectionType
090        extends ToolsType
091        implements Cloneable
092    {
093    
094        @XmlElement(name = "source-sections", namespace = "http://jomc.org/tools/model")
095        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
096        protected SourceSectionsType sourceSections;
097        @XmlAnyElement(lax = true)
098        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
099        protected List<Object> any;
100        @XmlAttribute(name = "name", required = true)
101        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
102        protected String name;
103        @XmlAttribute(name = "head-template")
104        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
105        protected String headTemplate;
106        @XmlAttribute(name = "tail-template")
107        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
108        protected String tailTemplate;
109        @XmlAttribute(name = "indentationLevel")
110        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
111        protected Integer indentationLevel;
112        @XmlAttribute(name = "optional")
113        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
114        protected Boolean optional;
115        @XmlAttribute(name = "editable")
116        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
117        protected Boolean editable;
118    
119        /**
120         * Creates a new {@code SourceSectionType} instance.
121         * 
122         */
123        public SourceSectionType() {
124            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
125            super();
126        }
127    
128        /**
129         * Creates a new {@code SourceSectionType} instance by deeply copying a given {@code SourceSectionType} instance.
130         * 
131         * 
132         * @param o
133         *     The instance to copy.
134         * @throws NullPointerException
135         *     if {@code o} is {@code null}.
136         */
137        public SourceSectionType(final SourceSectionType o) {
138            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
139            super(o);
140            if (o == null) {
141                throw new NullPointerException("Cannot create a copy of 'SourceSectionType' from 'null'.");
142            }
143            // CClassInfo: org.jomc.tools.model.SourceSectionsType
144            this.sourceSections = ((o.sourceSections == null)?null:((o.getSourceSections() == null)?null:o.getSourceSections().clone()));
145            // 'Any' collection.
146            if (o.any!= null) {
147                copyAny(o.getAny(), this.getAny());
148            }
149            // CBuiltinLeafInfo: java.lang.String
150            this.name = ((o.name == null)?null:o.getName());
151            // CBuiltinLeafInfo: java.lang.String
152            this.headTemplate = ((o.headTemplate == null)?null:o.getHeadTemplate());
153            // CBuiltinLeafInfo: java.lang.String
154            this.tailTemplate = ((o.tailTemplate == null)?null:o.getTailTemplate());
155            // CBuiltinLeafInfo: java.lang.Integer
156            this.indentationLevel = ((o.indentationLevel == null)?null:o.getIndentationLevel());
157            // CBuiltinLeafInfo: java.lang.Boolean
158            this.optional = ((o.optional == null)?null:o.isOptional());
159            // CBuiltinLeafInfo: java.lang.Boolean
160            this.editable = ((o.editable == null)?null:o.isEditable());
161        }
162    
163        /**
164         * Child sections of the section.
165         * 
166         * @return
167         *     possible object is
168         *     {@link SourceSectionsType }
169         *     
170         */
171        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
172        public SourceSectionsType getSourceSections() {
173            return sourceSections;
174        }
175    
176        /**
177         * Sets the value of the sourceSections property.
178         * 
179         * @param value
180         *     allowed object is
181         *     {@link SourceSectionsType }
182         *     
183         */
184        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
185        public void setSourceSections(SourceSectionsType value) {
186            this.sourceSections = value;
187        }
188    
189        /**
190         * Gets the value of the any property.
191         * 
192         * <p>
193         * This accessor method returns a reference to the live list,
194         * not a snapshot. Therefore any modification you make to the
195         * returned list will be present inside the JAXB object.
196         * This is why there is not a <CODE>set</CODE> method for the any property.
197         * 
198         * <p>
199         * For example, to add a new item, do as follows:
200         * <pre>
201         *    getAny().add(newItem);
202         * </pre>
203         * 
204         * 
205         * <p>
206         * Objects of the following type(s) are allowed in the list
207         * {@link Element }
208         * {@link Object }
209         * 
210         * 
211         */
212        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
213        public List<Object> getAny() {
214            if (any == null) {
215                any = new ArrayList<Object>();
216            }
217            return this.any;
218        }
219    
220        /**
221         * Gets the value of the name property.
222         * 
223         * @return
224         *     possible object is
225         *     {@link String }
226         *     
227         */
228        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
229        public String getName() {
230            return name;
231        }
232    
233        /**
234         * Sets the value of the name property.
235         * 
236         * @param value
237         *     allowed object is
238         *     {@link String }
239         *     
240         */
241        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
242        public void setName(String value) {
243            this.name = value;
244        }
245    
246        /**
247         * Gets the value of the headTemplate property.
248         * 
249         * @return
250         *     possible object is
251         *     {@link String }
252         *     
253         */
254        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
255        public String getHeadTemplate() {
256            return headTemplate;
257        }
258    
259        /**
260         * Sets the value of the headTemplate property.
261         * 
262         * @param value
263         *     allowed object is
264         *     {@link String }
265         *     
266         */
267        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
268        public void setHeadTemplate(String value) {
269            this.headTemplate = value;
270        }
271    
272        /**
273         * Gets the value of the tailTemplate property.
274         * 
275         * @return
276         *     possible object is
277         *     {@link String }
278         *     
279         */
280        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
281        public String getTailTemplate() {
282            return tailTemplate;
283        }
284    
285        /**
286         * Sets the value of the tailTemplate property.
287         * 
288         * @param value
289         *     allowed object is
290         *     {@link String }
291         *     
292         */
293        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
294        public void setTailTemplate(String value) {
295            this.tailTemplate = value;
296        }
297    
298        /**
299         * Gets the value of the indentationLevel property.
300         * 
301         * @return
302         *     possible object is
303         *     {@link Integer }
304         *     
305         */
306        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
307        public int getIndentationLevel() {
308            if (indentationLevel == null) {
309                return  0;
310            } else {
311                return indentationLevel;
312            }
313        }
314    
315        /**
316         * Sets the value of the indentationLevel property.
317         * 
318         * @param value
319         *     allowed object is
320         *     {@link Integer }
321         *     
322         */
323        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
324        public void setIndentationLevel(Integer value) {
325            this.indentationLevel = value;
326        }
327    
328        /**
329         * Gets the value of the optional property.
330         * 
331         * @return
332         *     possible object is
333         *     {@link Boolean }
334         *     
335         */
336        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
337        public boolean isOptional() {
338            if (optional == null) {
339                return false;
340            } else {
341                return optional;
342            }
343        }
344    
345        /**
346         * Sets the value of the optional property.
347         * 
348         * @param value
349         *     allowed object is
350         *     {@link Boolean }
351         *     
352         */
353        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
354        public void setOptional(Boolean value) {
355            this.optional = value;
356        }
357    
358        /**
359         * Gets the value of the editable property.
360         * 
361         * @return
362         *     possible object is
363         *     {@link Boolean }
364         *     
365         */
366        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
367        public boolean isEditable() {
368            if (editable == null) {
369                return false;
370            } else {
371                return editable;
372            }
373        }
374    
375        /**
376         * Sets the value of the editable property.
377         * 
378         * @param value
379         *     allowed object is
380         *     {@link Boolean }
381         *     
382         */
383        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
384        public void setEditable(Boolean value) {
385            this.editable = value;
386        }
387    
388        /**
389         * Copies all values of property {@code Any} deeply.
390         * 
391         * @param source
392         *     The source to copy from.
393         * @param target
394         *     The target to copy {@code source} to.
395         * @throws NullPointerException
396         *     if {@code target} is {@code null}.
397         */
398        @SuppressWarnings("unchecked")
399        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
400        private static void copyAny(final List<Object> source, final List<Object> target) {
401            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
402            if ((source!= null)&&(!source.isEmpty())) {
403                for (final Iterator<?> it = source.iterator(); it.hasNext(); ) {
404                    final Object next = it.next();
405                    if (next instanceof Element) {
406                        // CWildcardTypeInfo: org.w3c.dom.Element
407                        target.add(((Element)((Element) next).cloneNode(true)));
408                        continue;
409                    }
410                    if (next instanceof Object) {
411                        // CBuiltinLeafInfo: java.lang.Object
412                        target.add(copyOf(((Object) next)));
413                        continue;
414                    }
415                    // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
416                    throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Any' of class 'org.jomc.tools.model.SourceSectionType'."));
417                }
418            }
419        }
420    
421        /**
422         * Creates and returns a deep copy of a given object.
423         * 
424         * @param o
425         *     The instance to copy or {@code null}.
426         * @return
427         *     A deep copy of {@code o} or {@code null} if {@code o} is {@code null}.
428         */
429        @SuppressWarnings("unchecked")
430        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
431        private static Object copyOf(final Object o) {
432            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
433            try {
434                if (o!= null) {
435                    if (o.getClass().isPrimitive()) {
436                        return o;
437                    }
438                    if (o.getClass().isArray()) {
439                        return copyOfArray(o);
440                    }
441                    // Immutable types.
442                    if (o instanceof Boolean) {
443                        return o;
444                    }
445                    if (o instanceof Byte) {
446                        return o;
447                    }
448                    if (o instanceof Character) {
449                        return o;
450                    }
451                    if (o instanceof Double) {
452                        return o;
453                    }
454                    if (o instanceof Enum) {
455                        return o;
456                    }
457                    if (o instanceof Float) {
458                        return o;
459                    }
460                    if (o instanceof Integer) {
461                        return o;
462                    }
463                    if (o instanceof Long) {
464                        return o;
465                    }
466                    if (o instanceof Short) {
467                        return o;
468                    }
469                    if (o instanceof String) {
470                        return o;
471                    }
472                    if (o instanceof BigDecimal) {
473                        return o;
474                    }
475                    if (o instanceof BigInteger) {
476                        return o;
477                    }
478                    if (o instanceof UUID) {
479                        return o;
480                    }
481                    if (o instanceof QName) {
482                        return o;
483                    }
484                    if (o instanceof Duration) {
485                        return o;
486                    }
487                    if (o instanceof Currency) {
488                        return o;
489                    }
490                    // String based types.
491                    if (o instanceof File) {
492                        return new File(o.toString());
493                    }
494                    if (o instanceof URI) {
495                        return new URI(o.toString());
496                    }
497                    if (o instanceof URL) {
498                        return new URL(o.toString());
499                    }
500                    if (o instanceof MimeType) {
501                        return new MimeType(o.toString());
502                    }
503                    // Cloneable types.
504                    if (o instanceof XMLGregorianCalendar) {
505                        return ((XMLGregorianCalendar) o).clone();
506                    }
507                    if (o instanceof Date) {
508                        return ((Date) o).clone();
509                    }
510                    if (o instanceof Calendar) {
511                        return ((Calendar) o).clone();
512                    }
513                    if (o instanceof TimeZone) {
514                        return ((TimeZone) o).clone();
515                    }
516                    if (o instanceof Locale) {
517                        return ((Locale) o).clone();
518                    }
519                    if (o instanceof Element) {
520                        return ((Element)((Element) o).cloneNode(true));
521                    }
522                    if (o instanceof JAXBElement) {
523                        return copyOf(((JAXBElement) o));
524                    }
525                    try {
526                        return o.getClass().getMethod("clone", ((Class[]) null)).invoke(o, ((Object[]) null));
527                    } catch (NoSuchMethodException e) {
528                        if (o instanceof Serializable) {
529                            return copyOf(((Serializable) o));
530                        }
531                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
532                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
533                    } catch (IllegalAccessException e) {
534                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
535                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
536                    } catch (InvocationTargetException e) {
537                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
538                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
539                    } catch (SecurityException e) {
540                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
541                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
542                    } catch (IllegalArgumentException e) {
543                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
544                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
545                    } catch (ExceptionInInitializerError e) {
546                        // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
547                        throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
548                    }
549                }
550                return null;
551            } catch (MalformedURLException e) {
552                throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
553            } catch (URISyntaxException e) {
554                throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
555            } catch (MimeTypeParseException e) {
556                throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
557            }
558        }
559    
560        /**
561         * Creates and returns a deep copy of a given array.
562         * 
563         * @param array
564         *     The array to copy or {@code null}.
565         * @return
566         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
567         */
568        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
569        private static Object copyOfArray(final Object array) {
570            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
571            if (array!= null) {
572                if (array.getClass() == boolean[].class) {
573                    return copyOf(((boolean[]) array));
574                }
575                if (array.getClass() == byte[].class) {
576                    return copyOf(((byte[]) array));
577                }
578                if (array.getClass() == char[].class) {
579                    return copyOf(((char[]) array));
580                }
581                if (array.getClass() == double[].class) {
582                    return copyOf(((double[]) array));
583                }
584                if (array.getClass() == float[].class) {
585                    return copyOf(((float[]) array));
586                }
587                if (array.getClass() == int[].class) {
588                    return copyOf(((int[]) array));
589                }
590                if (array.getClass() == long[].class) {
591                    return copyOf(((long[]) array));
592                }
593                if (array.getClass() == short[].class) {
594                    return copyOf(((short[]) array));
595                }
596                final int len = Array.getLength(array);
597                final Object copy = Array.newInstance(array.getClass().getComponentType(), len);
598                for (int i = (len- 1); (i >= 0); i--) {
599                    Array.set(copy, i, copyOf(Array.get(array, i)));
600                }
601                return copy;
602            }
603            return null;
604        }
605    
606        /**
607         * Creates and returns a deep copy of a given array.
608         * 
609         * @param array
610         *     The array to copy or {@code null}.
611         * @return
612         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
613         */
614        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
615        private static boolean[] copyOf(final boolean[] array) {
616            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
617            if (array!= null) {
618                final boolean[] copy = ((boolean[]) Array.newInstance(array.getClass().getComponentType(), array.length));
619                System.arraycopy(array, 0, copy, 0, array.length);
620                return copy;
621            }
622            return null;
623        }
624    
625        /**
626         * Creates and returns a deep copy of a given array.
627         * 
628         * @param array
629         *     The array to copy or {@code null}.
630         * @return
631         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
632         */
633        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
634        private static byte[] copyOf(final byte[] array) {
635            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
636            if (array!= null) {
637                final byte[] copy = ((byte[]) Array.newInstance(array.getClass().getComponentType(), array.length));
638                System.arraycopy(array, 0, copy, 0, array.length);
639                return copy;
640            }
641            return null;
642        }
643    
644        /**
645         * Creates and returns a deep copy of a given array.
646         * 
647         * @param array
648         *     The array to copy or {@code null}.
649         * @return
650         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
651         */
652        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
653        private static char[] copyOf(final char[] array) {
654            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
655            if (array!= null) {
656                final char[] copy = ((char[]) Array.newInstance(array.getClass().getComponentType(), array.length));
657                System.arraycopy(array, 0, copy, 0, array.length);
658                return copy;
659            }
660            return null;
661        }
662    
663        /**
664         * Creates and returns a deep copy of a given array.
665         * 
666         * @param array
667         *     The array to copy or {@code null}.
668         * @return
669         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
670         */
671        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
672        private static double[] copyOf(final double[] array) {
673            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
674            if (array!= null) {
675                final double[] copy = ((double[]) Array.newInstance(array.getClass().getComponentType(), array.length));
676                System.arraycopy(array, 0, copy, 0, array.length);
677                return copy;
678            }
679            return null;
680        }
681    
682        /**
683         * Creates and returns a deep copy of a given array.
684         * 
685         * @param array
686         *     The array to copy or {@code null}.
687         * @return
688         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
689         */
690        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
691        private static float[] copyOf(final float[] array) {
692            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
693            if (array!= null) {
694                final float[] copy = ((float[]) Array.newInstance(array.getClass().getComponentType(), array.length));
695                System.arraycopy(array, 0, copy, 0, array.length);
696                return copy;
697            }
698            return null;
699        }
700    
701        /**
702         * Creates and returns a deep copy of a given array.
703         * 
704         * @param array
705         *     The array to copy or {@code null}.
706         * @return
707         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
708         */
709        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
710        private static int[] copyOf(final int[] array) {
711            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
712            if (array!= null) {
713                final int[] copy = ((int[]) Array.newInstance(array.getClass().getComponentType(), array.length));
714                System.arraycopy(array, 0, copy, 0, array.length);
715                return copy;
716            }
717            return null;
718        }
719    
720        /**
721         * Creates and returns a deep copy of a given array.
722         * 
723         * @param array
724         *     The array to copy or {@code null}.
725         * @return
726         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
727         */
728        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
729        private static long[] copyOf(final long[] array) {
730            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
731            if (array!= null) {
732                final long[] copy = ((long[]) Array.newInstance(array.getClass().getComponentType(), array.length));
733                System.arraycopy(array, 0, copy, 0, array.length);
734                return copy;
735            }
736            return null;
737        }
738    
739        /**
740         * Creates and returns a deep copy of a given array.
741         * 
742         * @param array
743         *     The array to copy or {@code null}.
744         * @return
745         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
746         */
747        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
748        private static short[] copyOf(final short[] array) {
749            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
750            if (array!= null) {
751                final short[] copy = ((short[]) Array.newInstance(array.getClass().getComponentType(), array.length));
752                System.arraycopy(array, 0, copy, 0, array.length);
753                return copy;
754            }
755            return null;
756        }
757    
758        /**
759         * Creates and returns a deep copy of a given {@code JAXBElement} instance.
760         * 
761         * @param element
762         *     The instance to copy or {@code null}.
763         * @return
764         *     A deep copy of {@code element} or {@code null} if {@code element} is {@code null}.
765         */
766        @SuppressWarnings("unchecked")
767        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
768        private static JAXBElement copyOf(final JAXBElement element) {
769            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
770            if (element!= null) {
771                final JAXBElement copy = new JAXBElement(element.getName(), element.getDeclaredType(), element.getScope(), element.getValue());
772                copy.setNil(element.isNil());
773                copy.setValue(copyOf(copy.getValue()));
774                return copy;
775            }
776            return null;
777        }
778    
779        /**
780         * Creates and returns a deep copy of a given {@code Serializable}.
781         * 
782         * @param serializable
783         *     The instance to copy or {@code null}.
784         * @return
785         *     A deep copy of {@code serializable} or {@code null} if {@code serializable} is {@code null}.
786         */
787        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
788        private static Serializable copyOf(final Serializable serializable) {
789            // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
790            if (serializable!= null) {
791                try {
792                    final ByteArrayOutputStream byteArrayOutput = new ByteArrayOutputStream();
793                    final ObjectOutputStream out = new ObjectOutputStream(byteArrayOutput);
794                    out.writeObject(serializable);
795                    out.close();
796                    final ByteArrayInputStream byteArrayInput = new ByteArrayInputStream(byteArrayOutput.toByteArray());
797                    final ObjectInputStream in = new ObjectInputStream(byteArrayInput);
798                    final Serializable copy = ((Serializable) in.readObject());
799                    in.close();
800                    return copy;
801                } catch (SecurityException e) {
802                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
803                } catch (ClassNotFoundException e) {
804                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
805                } catch (InvalidClassException e) {
806                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
807                } catch (NotSerializableException e) {
808                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
809                } catch (StreamCorruptedException e) {
810                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
811                } catch (OptionalDataException e) {
812                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
813                } catch (IOException e) {
814                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
815                }
816            }
817            return null;
818        }
819    
820        /**
821         * Creates and returns a deep copy of this object.
822         * 
823         * 
824         * @return
825         *     A deep copy of this object.
826         */
827        @Override
828        @Generated(value = "com.sun.tools.xjc.Driver", date = "2012-05-23T02:54:23+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
829        public SourceSectionType clone() {
830            {
831                // CC-XJC Version 2.0 Build 2011-09-16T18:27:24+0000
832                final SourceSectionType clone = ((SourceSectionType) super.clone());
833                // CClassInfo: org.jomc.tools.model.SourceSectionsType
834                clone.sourceSections = ((this.sourceSections == null)?null:((this.getSourceSections() == null)?null:this.getSourceSections().clone()));
835                // 'Any' collection.
836                if (this.any!= null) {
837                    clone.any = null;
838                    copyAny(this.getAny(), clone.getAny());
839                }
840                // CBuiltinLeafInfo: java.lang.String
841                clone.name = ((this.name == null)?null:this.getName());
842                // CBuiltinLeafInfo: java.lang.String
843                clone.headTemplate = ((this.headTemplate == null)?null:this.getHeadTemplate());
844                // CBuiltinLeafInfo: java.lang.String
845                clone.tailTemplate = ((this.tailTemplate == null)?null:this.getTailTemplate());
846                // CBuiltinLeafInfo: java.lang.Integer
847                clone.indentationLevel = ((this.indentationLevel == null)?null:this.getIndentationLevel());
848                // CBuiltinLeafInfo: java.lang.Boolean
849                clone.optional = ((this.optional == null)?null:this.isOptional());
850                // CBuiltinLeafInfo: java.lang.Boolean
851                clone.editable = ((this.editable == null)?null:this.isEditable());
852                return clone;
853            }
854        }
855        
856        /**
857         * Gets a single {@code JAXBElement} matching a namespace URI and local part from the {@code any} property of the
858         * instance.
859         *
860         * @param namespaceURI The namespace URI of the {@code JAXBElement} to return.
861         * @param localPart The local part of the {@code JAXBElement} to return.
862         * @param type The class of the type the element is bound to.
863         * @param <T> The type the element is bound to.
864         *
865         * @return The {@code JAXBElement} matching {@code namespaceURI} and {@code localPart} from the {@code any} property
866         * of the instance or {@code null}, if no such element is found.
867         *
868         * @throws NullPointerException if {@code namespaceURI}, {@code localPart} or {@code type} is {@code null}.
869         * @throws IllegalStateException if the {@code any} property contains more than one matching element.
870         *
871         * @see #getAnyElement(java.util.List, java.lang.String, java.lang.String, java.lang.Class)
872         */
873        public <T> javax.xml.bind.JAXBElement<T> getAnyElement( final String namespaceURI, final String localPart,
874                                                                final Class<T> type )
875        {
876            return this.getAnyElement( this.getAny(), namespaceURI, localPart, type );
877        }
878    
879        /**
880         * Gets a list containing all {@code JAXBElement}s matching a namespace URI and local part from the {@code any}
881         * property of the instance.
882         *
883         * @param namespaceURI The namespace URI of the {@code JAXBElement}s to return.
884         * @param localPart The local part of the {@code JAXBElement}s to return.
885         * @param type The class of the type the elements are bound to.
886         * @param <T> The type the elements are bound to.
887         *
888         * @return An unmodifiable list of all {@code JAXBElement}s matching {@code namespaceURI} and {@code localPart} from
889         * the {@code any} property of the instance - an empty list if no such elements are found.
890         *
891         * @throws NullPointerException if {@code namespaceURI}, {@code localPart} or {@code type} is {@code null}.
892         *
893         * @see #getAnyElements(java.util.List, java.lang.String, java.lang.String, java.lang.Class)
894         */
895        public <T> java.util.List<javax.xml.bind.JAXBElement<T>> getAnyElements( final String namespaceURI,
896                                                                                 final String localPart,
897                                                                                 final Class<T> type )
898        {
899            return this.getAnyElements( this.getAny(), namespaceURI, localPart, type );
900        }
901    
902        /**
903         * Gets a single object matching a given class from the {@code any} property of the instance.
904         *
905         * @param clazz The class to return an instance of.
906         * @param <T> The type of the object to return.
907         *
908         * @return The instance of {@code clazz} from the {@code any} property of the instance or {@code null}, if no such
909         * instance is found.
910         *
911         * @throws NullPointerException if {@code clazz} is {@code null}.
912         * @throws IllegalStateException if the {@code any} property contains more than one matching object.
913         *
914         * @see #getAnyObject(java.util.List, java.lang.Class)
915         */
916        public <T> T getAnyObject( final Class<T> clazz )
917        {
918            return this.getAnyObject( this.getAny(), clazz );
919        }
920    
921        /**
922         * Gets a list containing all objects matching a given class from the {@code any} property of the instance.
923         *
924         * @param clazz The class to return all instances of.
925         * @param <T> The type of the objects to return.
926         *
927         * @return An unmodifiable list of all instances of {@code clazz} from the {@code any} property of the instance -
928         * an empty list if no such objects are found.
929         *
930         * @throws NullPointerException if {@code clazz} is {@code null}.
931         *
932         * @see #getAnyObjects(java.util.List, java.lang.Class)
933         */
934        public <T> java.util.List<T> getAnyObjects( final Class<T> clazz )
935        {
936            return this.getAnyObjects( this.getAny(), clazz );
937        }
938          
939    }