View Javadoc

1   //
2   // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-2 
3   // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
4   // Any modifications to this file will be lost upon recompilation of the source schema. 
5   // Generated on: 2013.04.21 at 08:43:16 PM CEST 
6   //
7   
8   
9   package org.jomc.model;
10  
11  import java.io.ByteArrayInputStream;
12  import java.io.ByteArrayOutputStream;
13  import java.io.File;
14  import java.io.IOException;
15  import java.io.InvalidClassException;
16  import java.io.NotSerializableException;
17  import java.io.ObjectInputStream;
18  import java.io.ObjectOutputStream;
19  import java.io.OptionalDataException;
20  import java.io.Serializable;
21  import java.io.StreamCorruptedException;
22  import java.lang.reflect.Array;
23  import java.lang.reflect.InvocationTargetException;
24  import java.math.BigDecimal;
25  import java.math.BigInteger;
26  import java.net.MalformedURLException;
27  import java.net.URI;
28  import java.net.URISyntaxException;
29  import java.net.URL;
30  import java.util.ArrayList;
31  import java.util.Calendar;
32  import java.util.Currency;
33  import java.util.Date;
34  import java.util.Iterator;
35  import java.util.List;
36  import java.util.Locale;
37  import java.util.TimeZone;
38  import java.util.UUID;
39  import javax.activation.MimeType;
40  import javax.activation.MimeTypeParseException;
41  import javax.annotation.Generated;
42  import javax.xml.bind.JAXBElement;
43  import javax.xml.bind.annotation.XmlAccessType;
44  import javax.xml.bind.annotation.XmlAccessorType;
45  import javax.xml.bind.annotation.XmlAnyElement;
46  import javax.xml.bind.annotation.XmlAttribute;
47  import javax.xml.bind.annotation.XmlElement;
48  import javax.xml.bind.annotation.XmlType;
49  import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
50  import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
51  import javax.xml.datatype.Duration;
52  import javax.xml.datatype.XMLGregorianCalendar;
53  import javax.xml.namespace.QName;
54  import org.w3c.dom.Element;
55  
56  
57  /**
58   * 
59   * Model of a module.
60   * 
61   * The 'Module' type defines attributes 'name', 'version' and 'vendor'. Attribute 'name' holds the name of the module
62   * uniquely identifying the module in a set of modules. Attribute 'vendor' holds information regarding the vendor of the
63   * module. Attribute 'version' holds the version of the module.
64   * 
65   * A module defines implementations, messages, properties and specifications.
66   *       
67   * 
68   * <p>Java class for Module complex type.
69   * 
70   * <p>The following schema fragment specifies the expected content contained within this class.
71   * 
72   * <pre>
73   * &lt;complexType name="Module">
74   *   &lt;complexContent>
75   *     &lt;extension base="{http://jomc.org/model}ModelObject">
76   *       &lt;sequence>
77   *         &lt;element ref="{http://jomc.org/model}specifications" minOccurs="0"/>
78   *         &lt;element ref="{http://jomc.org/model}implementations" minOccurs="0"/>
79   *         &lt;element ref="{http://jomc.org/model}properties" minOccurs="0"/>
80   *         &lt;element ref="{http://jomc.org/model}messages" minOccurs="0"/>
81   *         &lt;any processContents='lax' namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
82   *       &lt;/sequence>
83   *       &lt;attribute name="name" use="required" type="{http://jomc.org/model}Identifier" />
84   *       &lt;attribute name="version" type="{http://jomc.org/model}Version" />
85   *       &lt;attribute name="vendor" type="{http://jomc.org/model}String" />
86   *     &lt;/extension>
87   *   &lt;/complexContent>
88   * &lt;/complexType>
89   * </pre>
90   * 
91   * 
92   */
93  @XmlAccessorType(XmlAccessType.FIELD)
94  @XmlType(name = "Module", namespace = "http://jomc.org/model", propOrder = {
95      "specifications",
96      "implementations",
97      "properties",
98      "messages",
99      "any"
100 })
101 @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
102 public class Module
103     extends ModelObject
104     implements Cloneable
105 {
106 
107     @XmlElement(namespace = "http://jomc.org/model")
108     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
109     protected Specifications specifications;
110     @XmlElement(namespace = "http://jomc.org/model")
111     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
112     protected Implementations implementations;
113     @XmlElement(namespace = "http://jomc.org/model")
114     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
115     protected Properties properties;
116     @XmlElement(namespace = "http://jomc.org/model")
117     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
118     protected Messages messages;
119     @XmlAnyElement(lax = true)
120     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
121     protected List<Object> any;
122     @XmlAttribute(name = "name", required = true)
123     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
124     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
125     protected String name;
126     @XmlAttribute(name = "version")
127     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
128     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
129     protected String version;
130     @XmlAttribute(name = "vendor")
131     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
132     protected String vendor;
133 
134     /**
135      * Creates a new {@code Module} instance.
136      * 
137      */
138     public Module() {
139         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
140         super();
141     }
142 
143     /**
144      * Creates a new {@code Module} instance by deeply copying a given {@code Module} instance.
145      * 
146      * 
147      * @param o
148      *     The instance to copy.
149      * @throws NullPointerException
150      *     if {@code o} is {@code null}.
151      */
152     public Module(final Module o) {
153         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
154         super(o);
155         if (o == null) {
156             throw new NullPointerException("Cannot create a copy of 'Module' from 'null'.");
157         }
158         // CClassInfo: org.jomc.model.Specifications
159         this.specifications = ((o.specifications == null)?null:((o.getSpecifications() == null)?null:o.getSpecifications().clone()));
160         // CClassInfo: org.jomc.model.Implementations
161         this.implementations = ((o.implementations == null)?null:((o.getImplementations() == null)?null:o.getImplementations().clone()));
162         // CClassInfo: org.jomc.model.Properties
163         this.properties = ((o.properties == null)?null:((o.getProperties() == null)?null:o.getProperties().clone()));
164         // CClassInfo: org.jomc.model.Messages
165         this.messages = ((o.messages == null)?null:((o.getMessages() == null)?null:o.getMessages().clone()));
166         // 'Any' collection.
167         if (o.any!= null) {
168             copyAny(o.getAny(), this.getAny());
169         }
170         // CBuiltinLeafInfo: java.lang.String
171         this.name = ((o.name == null)?null:o.getName());
172         // CBuiltinLeafInfo: java.lang.String
173         this.version = ((o.version == null)?null:o.getVersion());
174         // CBuiltinLeafInfo: java.lang.String
175         this.vendor = ((o.vendor == null)?null:o.getVendor());
176     }
177 
178     /**
179      * Specifications of this module or {@code null}.
180      * 
181      * @return
182      *     possible object is
183      *     {@link Specifications }
184      *     
185      */
186     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
187     public Specifications getSpecifications() {
188         return specifications;
189     }
190 
191     /**
192      * Sets the value of the specifications property.
193      * 
194      * @param value
195      *     allowed object is
196      *     {@link Specifications }
197      *     
198      */
199     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
200     public void setSpecifications(Specifications value) {
201         this.specifications = value;
202     }
203 
204     /**
205      * Implementations of this module or {@code null}.
206      * 
207      * @return
208      *     possible object is
209      *     {@link Implementations }
210      *     
211      */
212     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
213     public Implementations getImplementations() {
214         return implementations;
215     }
216 
217     /**
218      * Sets the value of the implementations property.
219      * 
220      * @param value
221      *     allowed object is
222      *     {@link Implementations }
223      *     
224      */
225     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
226     public void setImplementations(Implementations value) {
227         this.implementations = value;
228     }
229 
230     /**
231      * Properties of this module or {@code null}.
232      * 
233      * @return
234      *     possible object is
235      *     {@link Properties }
236      *     
237      */
238     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
239     public Properties getProperties() {
240         return properties;
241     }
242 
243     /**
244      * Sets the value of the properties property.
245      * 
246      * @param value
247      *     allowed object is
248      *     {@link Properties }
249      *     
250      */
251     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
252     public void setProperties(Properties value) {
253         this.properties = value;
254     }
255 
256     /**
257      * Messages of this module or {@code null}.
258      * 
259      * @return
260      *     possible object is
261      *     {@link Messages }
262      *     
263      */
264     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
265     public Messages getMessages() {
266         return messages;
267     }
268 
269     /**
270      * Sets the value of the messages property.
271      * 
272      * @param value
273      *     allowed object is
274      *     {@link Messages }
275      *     
276      */
277     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
278     public void setMessages(Messages value) {
279         this.messages = value;
280     }
281 
282     /**
283      * Gets the value of the any property.
284      * 
285      * <p>
286      * This accessor method returns a reference to the live list,
287      * not a snapshot. Therefore any modification you make to the
288      * returned list will be present inside the JAXB object.
289      * This is why there is not a <CODE>set</CODE> method for the any property.
290      * 
291      * <p>
292      * For example, to add a new item, do as follows:
293      * <pre>
294      *    getAny().add(newItem);
295      * </pre>
296      * 
297      * 
298      * <p>
299      * Objects of the following type(s) are allowed in the list
300      * {@link Object }
301      * {@link Element }
302      * 
303      * 
304      */
305     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
306     public List<Object> getAny() {
307         if (any == null) {
308             any = new ArrayList<Object>();
309         }
310         return this.any;
311     }
312 
313     /**
314      * Name of this module.
315      * 
316      * @return
317      *     possible object is
318      *     {@link String }
319      *     
320      */
321     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
322     public String getName() {
323         return name;
324     }
325 
326     /**
327      * Sets the value of the name property.
328      * 
329      * @param value
330      *     allowed object is
331      *     {@link String }
332      *     
333      */
334     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
335     public void setName(String value) {
336         this.name = value;
337     }
338 
339     /**
340      * Version of this module or {@code null}.
341      * 
342      * @return
343      *     possible object is
344      *     {@link String }
345      *     
346      */
347     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
348     public String getVersion() {
349         return version;
350     }
351 
352     /**
353      * Sets the value of the version property.
354      * 
355      * @param value
356      *     allowed object is
357      *     {@link String }
358      *     
359      */
360     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
361     public void setVersion(String value) {
362         this.version = value;
363     }
364 
365     /**
366      * Vendor of this module or {@code null}.
367      * 
368      * @return
369      *     possible object is
370      *     {@link String }
371      *     
372      */
373     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
374     public String getVendor() {
375         return vendor;
376     }
377 
378     /**
379      * Sets the value of the vendor property.
380      * 
381      * @param value
382      *     allowed object is
383      *     {@link String }
384      *     
385      */
386     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
387     public void setVendor(String value) {
388         this.vendor = value;
389     }
390 
391     /**
392      * Copies all values of property {@code Any} deeply.
393      * 
394      * @param source
395      *     The source to copy from.
396      * @param target
397      *     The target to copy {@code source} to.
398      * @throws NullPointerException
399      *     if {@code target} is {@code null}.
400      */
401     @SuppressWarnings("unchecked")
402     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
403     private static void copyAny(final List<Object> source, final List<Object> target) {
404         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
405         if ((source!= null)&&(!source.isEmpty())) {
406             for (final Iterator<?> it = source.iterator(); it.hasNext(); ) {
407                 final Object next = it.next();
408                 if (next instanceof Element) {
409                     // CWildcardTypeInfo: org.w3c.dom.Element
410                     target.add(((Element)((Element) next).cloneNode(true)));
411                     continue;
412                 }
413                 if (next instanceof Object) {
414                     // CBuiltinLeafInfo: java.lang.Object
415                     target.add(copyOf(((Object) next)));
416                     continue;
417                 }
418                 // Please report this at https://apps.sourceforge.net/mantisbt/ccxjc/
419                 throw new AssertionError((("Unexpected instance '"+ next)+"' for property 'Any' of class 'org.jomc.model.Module'."));
420             }
421         }
422     }
423 
424     /**
425      * Creates and returns a deep copy of a given object.
426      * 
427      * @param o
428      *     The instance to copy or {@code null}.
429      * @return
430      *     A deep copy of {@code o} or {@code null} if {@code o} is {@code null}.
431      */
432     @SuppressWarnings("unchecked")
433     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
434     private static Object copyOf(final Object o) {
435         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
436         try {
437             if (o!= null) {
438                 if (o.getClass().isPrimitive()) {
439                     return o;
440                 }
441                 if (o.getClass().isArray()) {
442                     return copyOfArray(o);
443                 }
444                 // Immutable types.
445                 if (o instanceof Boolean) {
446                     return o;
447                 }
448                 if (o instanceof Byte) {
449                     return o;
450                 }
451                 if (o instanceof Character) {
452                     return o;
453                 }
454                 if (o instanceof Double) {
455                     return o;
456                 }
457                 if (o instanceof Enum) {
458                     return o;
459                 }
460                 if (o instanceof Float) {
461                     return o;
462                 }
463                 if (o instanceof Integer) {
464                     return o;
465                 }
466                 if (o instanceof Long) {
467                     return o;
468                 }
469                 if (o instanceof Short) {
470                     return o;
471                 }
472                 if (o instanceof String) {
473                     return o;
474                 }
475                 if (o instanceof BigDecimal) {
476                     return o;
477                 }
478                 if (o instanceof BigInteger) {
479                     return o;
480                 }
481                 if (o instanceof UUID) {
482                     return o;
483                 }
484                 if (o instanceof QName) {
485                     return o;
486                 }
487                 if (o instanceof Duration) {
488                     return o;
489                 }
490                 if (o instanceof Currency) {
491                     return o;
492                 }
493                 // String based types.
494                 if (o instanceof File) {
495                     return new File(o.toString());
496                 }
497                 if (o instanceof URI) {
498                     return new URI(o.toString());
499                 }
500                 if (o instanceof URL) {
501                     return new URL(o.toString());
502                 }
503                 if (o instanceof MimeType) {
504                     return new MimeType(o.toString());
505                 }
506                 // Cloneable types.
507                 if (o instanceof XMLGregorianCalendar) {
508                     return ((XMLGregorianCalendar) o).clone();
509                 }
510                 if (o instanceof Date) {
511                     return ((Date) o).clone();
512                 }
513                 if (o instanceof Calendar) {
514                     return ((Calendar) o).clone();
515                 }
516                 if (o instanceof TimeZone) {
517                     return ((TimeZone) o).clone();
518                 }
519                 if (o instanceof Locale) {
520                     return ((Locale) o).clone();
521                 }
522                 if (o instanceof Element) {
523                     return ((Element)((Element) o).cloneNode(true));
524                 }
525                 if (o instanceof JAXBElement) {
526                     return copyOf(((JAXBElement) o));
527                 }
528                 try {
529                     return o.getClass().getMethod("clone", ((Class[]) null)).invoke(o, ((Object[]) null));
530                 } catch (NoSuchMethodException e) {
531                     if (o instanceof Serializable) {
532                         return copyOf(((Serializable) o));
533                     }
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 (IllegalAccessException 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 (InvocationTargetException 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 (SecurityException 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 (IllegalArgumentException 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 (ExceptionInInitializerError 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                 }
552             }
553             return null;
554         } catch (MimeTypeParseException e) {
555             throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
556         } catch (URISyntaxException e) {
557             throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
558         } catch (MalformedURLException e) {
559             throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ o)+"'.")).initCause(e));
560         }
561     }
562 
563     /**
564      * Creates and returns a deep copy of a given array.
565      * 
566      * @param array
567      *     The array to copy or {@code null}.
568      * @return
569      *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
570      */
571     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
572     private static Object copyOfArray(final Object array) {
573         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
574         if (array!= null) {
575             if (array.getClass() == boolean[].class) {
576                 return copyOf(((boolean[]) array));
577             }
578             if (array.getClass() == byte[].class) {
579                 return copyOf(((byte[]) array));
580             }
581             if (array.getClass() == char[].class) {
582                 return copyOf(((char[]) array));
583             }
584             if (array.getClass() == double[].class) {
585                 return copyOf(((double[]) array));
586             }
587             if (array.getClass() == float[].class) {
588                 return copyOf(((float[]) array));
589             }
590             if (array.getClass() == int[].class) {
591                 return copyOf(((int[]) array));
592             }
593             if (array.getClass() == long[].class) {
594                 return copyOf(((long[]) array));
595             }
596             if (array.getClass() == short[].class) {
597                 return copyOf(((short[]) array));
598             }
599             final int len = Array.getLength(array);
600             final Object copy = Array.newInstance(array.getClass().getComponentType(), len);
601             for (int i = (len- 1); (i >= 0); i--) {
602                 Array.set(copy, i, copyOf(Array.get(array, i)));
603             }
604             return copy;
605         }
606         return null;
607     }
608 
609     /**
610      * Creates and returns a deep copy of a given array.
611      * 
612      * @param array
613      *     The array to copy or {@code null}.
614      * @return
615      *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
616      */
617     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
618     private static boolean[] copyOf(final boolean[] array) {
619         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
620         if (array!= null) {
621             final boolean[] copy = ((boolean[]) Array.newInstance(array.getClass().getComponentType(), array.length));
622             System.arraycopy(array, 0, copy, 0, array.length);
623             return copy;
624         }
625         return null;
626     }
627 
628     /**
629      * Creates and returns a deep copy of a given array.
630      * 
631      * @param array
632      *     The array to copy or {@code null}.
633      * @return
634      *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
635      */
636     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
637     private static byte[] copyOf(final byte[] array) {
638         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
639         if (array!= null) {
640             final byte[] copy = ((byte[]) Array.newInstance(array.getClass().getComponentType(), array.length));
641             System.arraycopy(array, 0, copy, 0, array.length);
642             return copy;
643         }
644         return null;
645     }
646 
647     /**
648      * Creates and returns a deep copy of a given array.
649      * 
650      * @param array
651      *     The array to copy or {@code null}.
652      * @return
653      *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
654      */
655     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
656     private static char[] copyOf(final char[] array) {
657         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
658         if (array!= null) {
659             final char[] copy = ((char[]) Array.newInstance(array.getClass().getComponentType(), array.length));
660             System.arraycopy(array, 0, copy, 0, array.length);
661             return copy;
662         }
663         return null;
664     }
665 
666     /**
667      * Creates and returns a deep copy of a given array.
668      * 
669      * @param array
670      *     The array to copy or {@code null}.
671      * @return
672      *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
673      */
674     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
675     private static double[] copyOf(final double[] array) {
676         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
677         if (array!= null) {
678             final double[] copy = ((double[]) Array.newInstance(array.getClass().getComponentType(), array.length));
679             System.arraycopy(array, 0, copy, 0, array.length);
680             return copy;
681         }
682         return null;
683     }
684 
685     /**
686      * Creates and returns a deep copy of a given array.
687      * 
688      * @param array
689      *     The array to copy or {@code null}.
690      * @return
691      *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
692      */
693     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
694     private static float[] copyOf(final float[] array) {
695         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
696         if (array!= null) {
697             final float[] copy = ((float[]) Array.newInstance(array.getClass().getComponentType(), array.length));
698             System.arraycopy(array, 0, copy, 0, array.length);
699             return copy;
700         }
701         return null;
702     }
703 
704     /**
705      * Creates and returns a deep copy of a given array.
706      * 
707      * @param array
708      *     The array to copy or {@code null}.
709      * @return
710      *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
711      */
712     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
713     private static int[] copyOf(final int[] array) {
714         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
715         if (array!= null) {
716             final int[] copy = ((int[]) Array.newInstance(array.getClass().getComponentType(), array.length));
717             System.arraycopy(array, 0, copy, 0, array.length);
718             return copy;
719         }
720         return null;
721     }
722 
723     /**
724      * Creates and returns a deep copy of a given array.
725      * 
726      * @param array
727      *     The array to copy or {@code null}.
728      * @return
729      *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
730      */
731     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
732     private static long[] copyOf(final long[] array) {
733         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
734         if (array!= null) {
735             final long[] copy = ((long[]) Array.newInstance(array.getClass().getComponentType(), array.length));
736             System.arraycopy(array, 0, copy, 0, array.length);
737             return copy;
738         }
739         return null;
740     }
741 
742     /**
743      * Creates and returns a deep copy of a given array.
744      * 
745      * @param array
746      *     The array to copy or {@code null}.
747      * @return
748      *     A deep copy of {@code array} or {@code null} if {@code array} is {@code null}.
749      */
750     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
751     private static short[] copyOf(final short[] array) {
752         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
753         if (array!= null) {
754             final short[] copy = ((short[]) Array.newInstance(array.getClass().getComponentType(), array.length));
755             System.arraycopy(array, 0, copy, 0, array.length);
756             return copy;
757         }
758         return null;
759     }
760 
761     /**
762      * Creates and returns a deep copy of a given {@code JAXBElement} instance.
763      * 
764      * @param element
765      *     The instance to copy or {@code null}.
766      * @return
767      *     A deep copy of {@code element} or {@code null} if {@code element} is {@code null}.
768      */
769     @SuppressWarnings("unchecked")
770     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
771     private static JAXBElement copyOf(final JAXBElement element) {
772         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
773         if (element!= null) {
774             final JAXBElement copy = new JAXBElement(element.getName(), element.getDeclaredType(), element.getScope(), element.getValue());
775             copy.setNil(element.isNil());
776             copy.setValue(copyOf(copy.getValue()));
777             return copy;
778         }
779         return null;
780     }
781 
782     /**
783      * Creates and returns a deep copy of a given {@code Serializable}.
784      * 
785      * @param serializable
786      *     The instance to copy or {@code null}.
787      * @return
788      *     A deep copy of {@code serializable} or {@code null} if {@code serializable} is {@code null}.
789      */
790     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
791     private static Serializable copyOf(final Serializable serializable) {
792         // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
793         if (serializable!= null) {
794             try {
795                 final ByteArrayOutputStream byteArrayOutput = new ByteArrayOutputStream();
796                 final ObjectOutputStream out = new ObjectOutputStream(byteArrayOutput);
797                 out.writeObject(serializable);
798                 out.close();
799                 final ByteArrayInputStream byteArrayInput = new ByteArrayInputStream(byteArrayOutput.toByteArray());
800                 final ObjectInputStream in = new ObjectInputStream(byteArrayInput);
801                 final Serializable copy = ((Serializable) in.readObject());
802                 in.close();
803                 return copy;
804             } catch (SecurityException e) {
805                 throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
806             } catch (ClassNotFoundException e) {
807                 throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
808             } catch (InvalidClassException e) {
809                 throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
810             } catch (NotSerializableException e) {
811                 throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
812             } catch (StreamCorruptedException e) {
813                 throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
814             } catch (OptionalDataException e) {
815                 throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
816             } catch (IOException e) {
817                 throw((AssertionError) new AssertionError((("Unexpected instance during copying object '"+ serializable)+"'.")).initCause(e));
818             }
819         }
820         return null;
821     }
822 
823     /**
824      * Creates and returns a deep copy of this object.
825      * 
826      * 
827      * @return
828      *     A deep copy of this object.
829      */
830     @Override
831     @Generated(value = "com.sun.tools.xjc.Driver", date = "2013-04-21T08:43:16+02:00", comments = "JAXB RI vhudson-jaxb-ri-2.1-2")
832     public Module clone() {
833         {
834             // CC-XJC Version 2.0.1 Build 2012-03-02T12:09:12+0000
835             final Module clone = ((Module) super.clone());
836             // CClassInfo: org.jomc.model.Specifications
837             clone.specifications = ((this.specifications == null)?null:((this.getSpecifications() == null)?null:this.getSpecifications().clone()));
838             // CClassInfo: org.jomc.model.Implementations
839             clone.implementations = ((this.implementations == null)?null:((this.getImplementations() == null)?null:this.getImplementations().clone()));
840             // CClassInfo: org.jomc.model.Properties
841             clone.properties = ((this.properties == null)?null:((this.getProperties() == null)?null:this.getProperties().clone()));
842             // CClassInfo: org.jomc.model.Messages
843             clone.messages = ((this.messages == null)?null:((this.getMessages() == null)?null:this.getMessages().clone()));
844             // 'Any' collection.
845             if (this.any!= null) {
846                 clone.any = null;
847                 copyAny(this.getAny(), clone.getAny());
848             }
849             // CBuiltinLeafInfo: java.lang.String
850             clone.name = ((this.name == null)?null:this.getName());
851             // CBuiltinLeafInfo: java.lang.String
852             clone.version = ((this.version == null)?null:this.getVersion());
853             // CBuiltinLeafInfo: java.lang.String
854             clone.vendor = ((this.vendor == null)?null:this.getVendor());
855             return clone;
856         }
857     }
858     
859     /**
860      * Gets a single {@code JAXBElement} matching a namespace URI and local part from the {@code any} property of the
861      * instance.
862      *
863      * @param namespaceURI The namespace URI of the {@code JAXBElement} to return.
864      * @param localPart The local part of the {@code JAXBElement} to return.
865      *
866      * @return The {@code JAXBElement} matching {@code namespaceURI} and {@code localPart} from the {@code any} property
867      * of the instance or {@code null}, if no such element is found.
868      *
869      * @throws NullPointerException if {@code namespaceURI} or {@code localPart} is {@code null}.
870      * @throws IllegalStateException if the {@code any} property contains more than one matching element.
871      *
872      * @see #getAnyElement(java.util.List, java.lang.String, java.lang.String)
873      *
874      * @deprecated As of JOMC 1.1, please use method {@link #getAnyElement(java.lang.String, java.lang.String, java.lang.Class)}.
875      * This method will be removed in version 2.0.
876      */
877     @Deprecated
878     public javax.xml.bind.JAXBElement getAnyElement( final String namespaceURI, final String localPart )
879     {
880         return this.getAnyElement( this.getAny(), namespaceURI, localPart );
881     }
882 
883     /**
884      * Gets a list containing all {@code JAXBElement}s matching a namespace URI and local part from the {@code any}
885      * property of the instance.
886      *
887      * @param namespaceURI The namespace URI of the {@code JAXBElement}s to return.
888      * @param localPart The local part of the {@code JAXBElement}s to return.
889      *
890      * @return An unmodifiable list of all {@code JAXBElement}s matching {@code namespaceURI} and {@code localPart} from
891      * the {@code any} property of the instance - an empty list if no such elements are found.
892      *
893      * @throws NullPointerException if {@code namespaceURI} or {@code localPart} is {@code null}.
894      *
895      * @see #getAnyElements(java.util.List, java.lang.String, java.lang.String)
896      *
897      * @deprecated As of JOMC 1.1, please use method {@link #getAnyElements(java.lang.String, java.lang.String, java.lang.Class)}.
898      * This method will be removed in version 2.0.
899      */
900     @Deprecated
901     public java.util.List<javax.xml.bind.JAXBElement> getAnyElements( final String namespaceURI,
902                                                                       final String localPart )
903     {
904         return this.getAnyElements( this.getAny(), namespaceURI, localPart );
905     }
906 
907     /**
908      * Gets a single {@code JAXBElement} matching a namespace URI and local part from the {@code any} property of the
909      * instance.
910      *
911      * @param namespaceURI The namespace URI of the {@code JAXBElement} to return.
912      * @param localPart The local part of the {@code JAXBElement} to return.
913      * @param type The class of the type the element is bound to.
914      * @param <T> The type the element is bound to.
915      *
916      * @return The {@code JAXBElement} matching {@code namespaceURI} and {@code localPart} from the {@code any} property
917      * of the instance or {@code null}, if no such element is found.
918      *
919      * @throws NullPointerException if {@code namespaceURI}, {@code localPart} or {@code type} is {@code null}.
920      * @throws IllegalStateException if the {@code any} property contains more than one matching element.
921      *
922      * @see #getAnyElement(java.util.List, java.lang.String, java.lang.String, java.lang.Class)
923      *
924      * @since 1.1
925      */
926     public <T> javax.xml.bind.JAXBElement<T> getAnyElement( final String namespaceURI, final String localPart,
927                                                             final Class<T> type )
928     {
929         return this.getAnyElement( this.getAny(), namespaceURI, localPart, type );
930     }
931 
932     /**
933      * Gets a list containing all {@code JAXBElement}s matching a namespace URI and local part from the {@code any}
934      * property of the instance.
935      *
936      * @param namespaceURI The namespace URI of the {@code JAXBElement}s to return.
937      * @param localPart The local part of the {@code JAXBElement}s to return.
938      * @param type The class of the type the elements are bound to.
939      * @param <T> The type the elements are bound to.
940      *
941      * @return An unmodifiable list of all {@code JAXBElement}s matching {@code namespaceURI} and {@code localPart} from
942      * the {@code any} property of the instance - an empty list if no such elements are found.
943      *
944      * @throws NullPointerException if {@code namespaceURI}, {@code localPart} or {@code type} is {@code null}.
945      *
946      * @see #getAnyElements(java.util.List, java.lang.String, java.lang.String, java.lang.Class)
947      *
948      * @since 1.1
949      */
950     public <T> java.util.List<javax.xml.bind.JAXBElement<T>> getAnyElements( final String namespaceURI,
951                                                                              final String localPart,
952                                                                              final Class<T> type )
953     {
954         return this.getAnyElements( this.getAny(), namespaceURI, localPart, type );
955     }
956 
957     /**
958      * Gets a single object matching a given class from the {@code any} property of the instance.
959      *
960      * @param clazz The class to return an instance of.
961      * @param <T> The type of the object to return.
962      *
963      * @return The instance of {@code clazz} from the {@code any} property of the instance or {@code null}, if no such
964      * instance is found.
965      *
966      * @throws NullPointerException if {@code clazz} is {@code null}.
967      * @throws IllegalStateException if the {@code any} property contains more than one matching object.
968      *
969      * @see #getAnyObject(java.util.List, java.lang.Class)
970      */
971     public <T> T getAnyObject( final Class<T> clazz )
972     {
973         return this.getAnyObject( this.getAny(), clazz );
974     }
975 
976     /**
977      * Gets a list containing all objects matching a given class from the {@code any} property of the instance.
978      *
979      * @param clazz The class to return all instances of.
980      * @param <T> The type of the objects to return.
981      *
982      * @return An unmodifiable list of all instances of {@code clazz} from the {@code any} property of the instance -
983      * an empty list if no such objects are found.
984      *
985      * @throws NullPointerException if {@code clazz} is {@code null}.
986      *
987      * @see #getAnyObjects(java.util.List, java.lang.Class)
988      */
989     public <T> java.util.List<T> getAnyObjects( final Class<T> clazz )
990     {
991         return this.getAnyObjects( this.getAny(), clazz );
992     }
993       
994 }