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