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