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 a dependency.
052     * 
053     * The 'Dependency' type extends the 'SpecificationReference' type adding attributes 'implementationName', 'name',
054     * 'bound' and 'optional'. Attribute 'implementationName' holds an identifier selecting a single implementation from the
055     * set of implementations implementing the referenced specification. Attribute 'name' holds an identifier uniquely
056     * identifying the dependency in a set of dependencies. Attribute 'bound' flags the instances of the dependency bound
057     * to the declaring implementation. Attribute 'optional' flags a dependency optional. Properties set with a dependency
058     * override properties of the selected implementations.
059     *       
060     * 
061     * <p>Java class for Dependency complex type.
062     * 
063     * <p>The following schema fragment specifies the expected content contained within this class.
064     * 
065     * <pre>
066     * &lt;complexType name="Dependency">
067     *   &lt;complexContent>
068     *     &lt;extension base="{http://jomc.org/model}SpecificationReference">
069     *       &lt;sequence>
070     *         &lt;element ref="{http://jomc.org/model}properties" minOccurs="0"/>
071     *         &lt;any processContents='lax' namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
072     *       &lt;/sequence>
073     *       &lt;attribute name="implementationName" type="{http://jomc.org/model}Identifier" />
074     *       &lt;attribute name="name" use="required" type="{http://jomc.org/model}Identifier" />
075     *       &lt;attribute name="bound" type="{http://jomc.org/model}Flag" default="true" />
076     *       &lt;attribute name="optional" type="{http://jomc.org/model}Flag" default="false" />
077     *     &lt;/extension>
078     *   &lt;/complexContent>
079     * &lt;/complexType>
080     * </pre>
081     * 
082     * 
083     */
084    @XmlAccessorType(XmlAccessType.FIELD)
085    @XmlType(name = "Dependency", propOrder = {
086        "properties",
087        "any"
088    })
089    @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
090    public class Dependency
091        extends SpecificationReference
092        implements Cloneable
093    {
094    
095        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
096        protected Properties properties;
097        @XmlAnyElement(lax = true)
098        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
099        protected List<Object> any;
100        @XmlAttribute
101        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
102        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
103        protected String implementationName;
104        @XmlAttribute(required = true)
105        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
106        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
107        protected String name;
108        @XmlAttribute
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 Boolean bound;
111        @XmlAttribute
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 Boolean optional;
114    
115        /**
116         * Creates a new {@code Dependency} instance.
117         * 
118         */
119        public Dependency() {
120            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
121            super();
122        }
123    
124        /**
125         * Creates a new {@code Dependency} instance by deeply copying a given {@code Dependency} instance.
126         * 
127         * 
128         * @param o
129         *     The instance to copy.
130         * @throws NullPointerException
131         *     if {@code o} is {@code null}.
132         */
133        public Dependency(final Dependency o) {
134            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
135            super(o);
136            if (o == null) {
137                throw new NullPointerException("Cannot create a copy of 'Dependency' from 'null'.");
138            }
139            // CClassInfo: org.jomc.model.Properties
140            this.properties = ((o.getProperties() == null)?null:o.getProperties().clone());
141            // 'Any' collection.
142            copyAny(o.getAny(), getAny());
143            // CBuiltinLeafInfo: java.lang.String
144            this.implementationName = o.getImplementationName();
145            // CBuiltinLeafInfo: java.lang.String
146            this.name = o.getName();
147            // CBuiltinLeafInfo: java.lang.Boolean
148            this.bound = o.isBound();
149            // CBuiltinLeafInfo: java.lang.Boolean
150            this.optional = o.isOptional();
151        }
152    
153        /**
154         * Properties of this dependency or {@code null}.
155         * 
156         * @return
157         *     possible object is
158         *     {@link Properties }
159         *     
160         */
161        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
162        public Properties getProperties() {
163            return properties;
164        }
165    
166        /**
167         * Sets the value of the properties property.
168         * 
169         * @param value
170         *     allowed object is
171         *     {@link Properties }
172         *     
173         */
174        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
175        public void setProperties(Properties value) {
176            this.properties = value;
177        }
178    
179        /**
180         * Gets the value of the any property.
181         * 
182         * <p>
183         * This accessor method returns a reference to the live list,
184         * not a snapshot. Therefore any modification you make to the
185         * returned list will be present inside the JAXB object.
186         * This is why there is not a <CODE>set</CODE> method for the any property.
187         * 
188         * <p>
189         * For example, to add a new item, do as follows:
190         * <pre>
191         *    getAny().add(newItem);
192         * </pre>
193         * 
194         * 
195         * <p>
196         * Objects of the following type(s) are allowed in the list
197         * {@link Element }
198         * {@link Object }
199         * 
200         * 
201         */
202        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
203        public List<Object> getAny() {
204            if (any == null) {
205                any = new ArrayList<Object>();
206            }
207            return this.any;
208        }
209    
210        /**
211         * Name of the selected implementation of the specification of this dependency or {@code null}.
212         * 
213         * @return
214         *     possible object is
215         *     {@link String }
216         *     
217         */
218        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
219        public String getImplementationName() {
220            return implementationName;
221        }
222    
223        /**
224         * Sets the value of the implementationName property.
225         * 
226         * @param value
227         *     allowed object is
228         *     {@link String }
229         *     
230         */
231        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
232        public void setImplementationName(String value) {
233            this.implementationName = value;
234        }
235    
236        /**
237         * Name of this dependency.
238         * 
239         * @return
240         *     possible object is
241         *     {@link String }
242         *     
243         */
244        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
245        public String getName() {
246            return name;
247        }
248    
249        /**
250         * Sets the value of the name property.
251         * 
252         * @param value
253         *     allowed object is
254         *     {@link String }
255         *     
256         */
257        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
258        public void setName(String value) {
259            this.name = value;
260        }
261    
262        /**
263         * {@code true} if instances of this dependency are bound to the declaring implementation.
264         * 
265         * @return
266         *     possible object is
267         *     {@link Boolean }
268         *     
269         */
270        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
271        public boolean isBound() {
272            if (bound == null) {
273                return true;
274            } else {
275                return bound;
276            }
277        }
278    
279        /**
280         * Sets the value of the bound property.
281         * 
282         * @param value
283         *     allowed object is
284         *     {@link Boolean }
285         *     
286         */
287        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
288        public void setBound(Boolean value) {
289            this.bound = value;
290        }
291    
292        /**
293         * {@code true} if this dependency is optional.
294         * 
295         * @return
296         *     possible object is
297         *     {@link Boolean }
298         *     
299         */
300        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
301        public boolean isOptional() {
302            if (optional == null) {
303                return false;
304            } else {
305                return optional;
306            }
307        }
308    
309        /**
310         * Sets the value of the optional property.
311         * 
312         * @param value
313         *     allowed object is
314         *     {@link Boolean }
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 void setOptional(Boolean value) {
319            this.optional = value;
320        }
321    
322        /**
323         * Copies all values of property {@code Any} deeply.
324         * 
325         * @param target
326         *     The target to copy {@code source} to.
327         * @param source
328         *     The source to copy from.
329         * @throws NullPointerException
330         *     if {@code source} or {@code target} is {@code null}.
331         */
332        @SuppressWarnings("unchecked")
333        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
334        private static void copyAny(final List<Object> source, final List<Object> target) {
335            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
336            if (!source.isEmpty()) {
337                for (Iterator it = source.iterator(); it.hasNext(); ) {
338                    final Object next = it.next();
339                    if (next instanceof Element) {
340                        // CWildcardTypeInfo: org.w3c.dom.Element
341                        target.add(((Element)((Element) next).cloneNode(true)));
342                        continue;
343                    }
344                    if (next instanceof Object) {
345                        // CBuiltinLeafInfo: java.lang.Object
346                        target.add(copyOfObject(((Object) next)));
347                        continue;
348                    }
349                    // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
350                    throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Any' of class 'org.jomc.model.Dependency'."));
351                }
352            }
353        }
354    
355        /**
356         * Creates and returns a deep copy of a given object.
357         * 
358         * @param o
359         *     The instance to copy or {@code null}.
360         * @return
361         *     A deep copy of {@code o} or {@code null} if {@code o} is {@code null}.
362         */
363        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
364        private static Object copyOfObject(final Object o) {
365            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
366            if (o!= null) {
367                if (o.getClass().isPrimitive()) {
368                    return o;
369                }
370                if (o.getClass().isArray()) {
371                    return copyOfArray(o);
372                }
373                if (o instanceof Boolean) {
374                    return o;
375                }
376                if (o instanceof Byte) {
377                    return o;
378                }
379                if (o instanceof Character) {
380                    return o;
381                }
382                if (o instanceof Double) {
383                    return o;
384                }
385                if (o instanceof Enum) {
386                    return o;
387                }
388                if (o instanceof Float) {
389                    return o;
390                }
391                if (o instanceof Integer) {
392                    return o;
393                }
394                if (o instanceof Long) {
395                    return o;
396                }
397                if (o instanceof Short) {
398                    return o;
399                }
400                if (o instanceof String) {
401                    return o;
402                }
403                if (o instanceof BigDecimal) {
404                    return o;
405                }
406                if (o instanceof BigInteger) {
407                    return o;
408                }
409                if (o instanceof UUID) {
410                    return o;
411                }
412                if (o instanceof QName) {
413                    return o;
414                }
415                if (o instanceof Duration) {
416                    return o;
417                }
418                if (o instanceof Currency) {
419                    return o;
420                }
421                if (o instanceof XMLGregorianCalendar) {
422                    return ((XMLGregorianCalendar) o).clone();
423                }
424                if (o instanceof Date) {
425                    return ((Date) o).clone();
426                }
427                if (o instanceof Calendar) {
428                    return ((Calendar) o).clone();
429                }
430                if (o instanceof TimeZone) {
431                    return ((TimeZone) o).clone();
432                }
433                if (o instanceof Locale) {
434                    return ((Locale) o).clone();
435                }
436                if (o instanceof Element) {
437                    return ((Element)((Element) o).cloneNode(true));
438                }
439                if (o instanceof JAXBElement) {
440                    return copyOFJAXBElement(((JAXBElement) o));
441                }
442                try {
443                    return o.getClass().getMethod("clone", ((Class[]) null)).invoke(o, ((Object[]) null));
444                } catch (NoSuchMethodException e) {
445                    if (o instanceof Serializable) {
446                        return copyOfSerializable(((Serializable) o));
447                    }
448                    // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
449                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
450                } catch (IllegalAccessException e) {
451                    // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
452                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
453                } catch (InvocationTargetException e) {
454                    // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
455                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
456                } catch (SecurityException e) {
457                    // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
458                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
459                } catch (IllegalArgumentException e) {
460                    // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
461                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
462                } catch (ExceptionInInitializerError e) {
463                    // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
464                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
465                }
466            }
467            return null;
468        }
469    
470        /**
471         * Creates and returns a deep copy of a given array.
472         * 
473         * @param array
474         *     The array to copy or {@code null}.
475         * @return
476         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
477         */
478        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
479        private static Object copyOfArray(final Object array) {
480            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
481            if (array!= null) {
482                if (array.getClass() == boolean[].class) {
483                    return copyOf(((boolean[]) array));
484                }
485                if (array.getClass() == byte[].class) {
486                    return copyOf(((byte[]) array));
487                }
488                if (array.getClass() == char[].class) {
489                    return copyOf(((char[]) array));
490                }
491                if (array.getClass() == double[].class) {
492                    return copyOf(((double[]) array));
493                }
494                if (array.getClass() == float[].class) {
495                    return copyOf(((float[]) array));
496                }
497                if (array.getClass() == int[].class) {
498                    return copyOf(((int[]) array));
499                }
500                if (array.getClass() == long[].class) {
501                    return copyOf(((long[]) array));
502                }
503                if (array.getClass() == short[].class) {
504                    return copyOf(((short[]) array));
505                }
506                final int len = Array.getLength(array);
507                final Object copy = Array.newInstance(array.getClass().getComponentType(), len);
508                for (int i = (len- 1); (i >= 0); i--) {
509                    Array.set(copy, i, copyOfObject(Array.get(array, i)));
510                }
511                return copy;
512            }
513            return null;
514        }
515    
516        /**
517         * Creates and returns a deep copy of a given array.
518         * 
519         * @param array
520         *     The array to copy or {@code null}.
521         * @return
522         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
523         */
524        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
525        private static boolean[] copyOf(final boolean[] array) {
526            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
527            if (array!= null) {
528                final boolean[] copy = ((boolean[]) Array.newInstance(array.getClass().getComponentType(), array.length));
529                System.arraycopy(array, 0, copy, 0, array.length);
530                return copy;
531            }
532            return null;
533        }
534    
535        /**
536         * Creates and returns a deep copy of a given array.
537         * 
538         * @param array
539         *     The array to copy or {@code null}.
540         * @return
541         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
542         */
543        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
544        private static byte[] copyOf(final byte[] array) {
545            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
546            if (array!= null) {
547                final byte[] copy = ((byte[]) Array.newInstance(array.getClass().getComponentType(), array.length));
548                System.arraycopy(array, 0, copy, 0, array.length);
549                return copy;
550            }
551            return null;
552        }
553    
554        /**
555         * Creates and returns a deep copy of a given array.
556         * 
557         * @param array
558         *     The array to copy or {@code null}.
559         * @return
560         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
561         */
562        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
563        private static char[] copyOf(final char[] array) {
564            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
565            if (array!= null) {
566                final char[] copy = ((char[]) Array.newInstance(array.getClass().getComponentType(), array.length));
567                System.arraycopy(array, 0, copy, 0, array.length);
568                return copy;
569            }
570            return null;
571        }
572    
573        /**
574         * Creates and returns a deep copy of a given array.
575         * 
576         * @param array
577         *     The array to copy or {@code null}.
578         * @return
579         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
580         */
581        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
582        private static double[] copyOf(final double[] array) {
583            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
584            if (array!= null) {
585                final double[] copy = ((double[]) Array.newInstance(array.getClass().getComponentType(), array.length));
586                System.arraycopy(array, 0, copy, 0, array.length);
587                return copy;
588            }
589            return null;
590        }
591    
592        /**
593         * Creates and returns a deep copy of a given array.
594         * 
595         * @param array
596         *     The array to copy or {@code null}.
597         * @return
598         *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
599         */
600        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
601        private static float[] copyOf(final float[] array) {
602            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
603            if (array!= null) {
604                final float[] copy = ((float[]) Array.newInstance(array.getClass().getComponentType(), array.length));
605                System.arraycopy(array, 0, copy, 0, array.length);
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 int[] copyOf(final int[] array) {
621            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
622            if (array!= null) {
623                final int[] copy = ((int[]) 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 long[] copyOf(final long[] array) {
640            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
641            if (array!= null) {
642                final long[] copy = ((long[]) 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 short[] copyOf(final short[] array) {
659            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
660            if (array!= null) {
661                final short[] copy = ((short[]) 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 {@code JAXBElement} instance.
670         * 
671         * @param element
672         *     The instance to copy or {@code null}.
673         * @return
674         *     A deep copy of {@code element} or {@code null} if {@code element} 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 JAXBElement copyOFJAXBElement(final JAXBElement element) {
678            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
679            if (element!= null) {
680                final JAXBElement copy = new JAXBElement(element.getName(), element.getDeclaredType(), element.getScope(), element.getValue());
681                copy.setNil(element.isNil());
682                copy.setValue(copyOfObject(copy.getValue()));
683                return copy;
684            }
685            return null;
686        }
687    
688        /**
689         * Creates and returns a deep copy of a given {@code Serializable}.
690         * 
691         * @param serializable
692         *     The instance to copy or {@code null}.
693         * @return
694         *     A deep copy of {@code serializable} or {@code null} if {@code serializable} is {@code null}.
695         */
696        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
697        private static Serializable copyOfSerializable(final Serializable serializable) {
698            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
699            if (serializable!= null) {
700                try {
701                    final ByteArrayOutputStream byteArrayOutput = new ByteArrayOutputStream();
702                    final ObjectOutputStream out = new ObjectOutputStream(byteArrayOutput);
703                    out.writeObject(serializable);
704                    out.close();
705                    final ByteArrayInputStream byteArrayInput = new ByteArrayInputStream(byteArrayOutput.toByteArray());
706                    final ObjectInputStream in = new ObjectInputStream(byteArrayInput);
707                    final Serializable copy = ((Serializable) in.readObject());
708                    in.close();
709                    return copy;
710                } catch (SecurityException e) {
711                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
712                } catch (ClassNotFoundException e) {
713                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
714                } catch (InvalidClassException e) {
715                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
716                } catch (NotSerializableException e) {
717                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
718                } catch (StreamCorruptedException e) {
719                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
720                } catch (OptionalDataException e) {
721                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
722                } catch (IOException e) {
723                    throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
724                }
725            }
726            return null;
727        }
728    
729        /**
730         * Creates and returns a deep copy of this object.
731         * 
732         * 
733         * @return
734         *     A deep copy of this object.
735         */
736        @Override
737        @Generated(value = "com.sun.tools.xjc.Driver", date = "2009-12-07T03:06:36+00:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-833")
738        public Dependency clone() {
739            // CC-XJC Version 1.2 Build 2009-11-15T21:50:02+0000
740            return new Dependency(this);
741        }
742    
743    }