package org.openestate.io.is24_xml.xml;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.jvnet.jaxb2_commons.lang.CopyStrategy2;
import org.jvnet.jaxb2_commons.lang.CopyTo2;
import org.jvnet.jaxb2_commons.lang.Equals2;
import org.jvnet.jaxb2_commons.lang.EqualsStrategy2;
import org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBToStringStrategy;
import org.jvnet.jaxb2_commons.lang.ToString2;
import org.jvnet.jaxb2_commons.lang.ToStringStrategy2;
import org.jvnet.jaxb2_commons.locator.ObjectLocator;
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;

/**
 *
Java class for ImmobilienTransferTyp complex type.
 *
 *
The following schema fragment specifies the expected content contained within this class.
 *
 *

 * <complexType name="ImmobilienTransferTyp">
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <sequence>
 *         <element name="Anbieter">
 *           <complexType>
 *             <complexContent>
 *               <extension base="{http://www.immobilienscout24.de/immobilientransfer}AnbieterTyp">
 *                 <sequence>
 *                   <element ref="{http://www.immobilienscout24.de/immobilientransfer}VirtuelleImmobilie" maxOccurs="unbounded" minOccurs="0"/>
 *                   <element ref="{http://www.immobilienscout24.de/immobilientransfer}Immobilie" maxOccurs="unbounded" minOccurs="0"/>
 *                 </sequence>
 *               </extension>
 *             </complexContent>
 *           </complexType>
 *         </element>
 *       </sequence>
 *       <attribute name="EmailBeiFehler" use="required" type="{http://www.immobilienscout24.de/immobilientransfer}EmailTyp" />
 *       <attribute name="ErstellerSoftware" use="required">
 *         <simpleType>
 *           <restriction base="{http://www.immobilienscout24.de/immobilientransfer}Text100Typ">
 *             <minLength value="3"/>
 *           </restriction>
 *         </simpleType>
 *       </attribute>
 *       <attribute name="ErstellerSoftwareVersion" use="required">
 *         <simpleType>
 *           <restriction base="{http://www.immobilienscout24.de/immobilientransfer}Text100Typ">
 *             <minLength value="3"/>
 *           </restriction>
 *         </simpleType>
 *       </attribute>
 *     </restriction>
 *   </complexContent>
 * </complexType>
 *

 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ImmobilienTransferTyp", propOrder = {
    "anbieter"
})
@Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
public class ImmobilienTransferTyp implements Serializable, Cloneable, CopyTo2, Equals2, ToString2
{

    @XmlElement(name = "Anbieter", required = true)
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    protected ImmobilienTransferTyp.Anbieter anbieter;
    @XmlAttribute(name = "EmailBeiFehler", required = true)
    @XmlJavaTypeAdapter(Adapter16 .class)
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    protected String emailBeiFehler;
    @XmlAttribute(name = "ErstellerSoftware", required = true)
    @XmlJavaTypeAdapter(Adapter9 .class)
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    protected String erstellerSoftware;
    @XmlAttribute(name = "ErstellerSoftwareVersion", required = true)
    @XmlJavaTypeAdapter(Adapter9 .class)
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    protected String erstellerSoftwareVersion;

    /**
     * Gets the value of the anbieter property.
     *
     * @return
     *     possible object is
     *     {@link ImmobilienTransferTyp.Anbieter }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public ImmobilienTransferTyp.Anbieter getAnbieter() {
        return anbieter;
    }

    /**
     * Sets the value of the anbieter property.
     *
     * @param value
     *     allowed object is
     *     {@link ImmobilienTransferTyp.Anbieter }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public void setAnbieter(ImmobilienTransferTyp.Anbieter value) {
        this.anbieter = value;
    }

    /**
     * Gets the value of the emailBeiFehler property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public String getEmailBeiFehler() {
        return emailBeiFehler;
    }

    /**
     * Sets the value of the emailBeiFehler property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public void setEmailBeiFehler(String value) {
        this.emailBeiFehler = value;
    }

    /**
     * Gets the value of the erstellerSoftware property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public String getErstellerSoftware() {
        return erstellerSoftware;
    }

    /**
     * Sets the value of the erstellerSoftware property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public void setErstellerSoftware(String value) {
        this.erstellerSoftware = value;
    }

    /**
     * Gets the value of the erstellerSoftwareVersion property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public String getErstellerSoftwareVersion() {
        return erstellerSoftwareVersion;
    }

    /**
     * Sets the value of the erstellerSoftwareVersion property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public void setErstellerSoftwareVersion(String value) {
        this.erstellerSoftwareVersion = value;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public String toString() {
        final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
        final StringBuilder buffer = new StringBuilder();
        append(null, buffer, strategy);
        return buffer.toString();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        strategy.appendStart(locator, this, buffer);
        appendFields(locator, buffer, strategy);
        strategy.appendEnd(locator, this, buffer);
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        {
            ImmobilienTransferTyp.Anbieter theAnbieter;
            theAnbieter = this.getAnbieter();
            strategy.appendField(locator, this, "anbieter", buffer, theAnbieter, (this.anbieter!= null));
        }
        {
            String theEmailBeiFehler;
            theEmailBeiFehler = this.getEmailBeiFehler();
            strategy.appendField(locator, this, "emailBeiFehler", buffer, theEmailBeiFehler, (this.emailBeiFehler!= null));
        }
        {
            String theErstellerSoftware;
            theErstellerSoftware = this.getErstellerSoftware();
            strategy.appendField(locator, this, "erstellerSoftware", buffer, theErstellerSoftware, (this.erstellerSoftware!= null));
        }
        {
            String theErstellerSoftwareVersion;
            theErstellerSoftwareVersion = this.getErstellerSoftwareVersion();
            strategy.appendField(locator, this, "erstellerSoftwareVersion", buffer, theErstellerSoftwareVersion, (this.erstellerSoftwareVersion!= null));
        }
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public Object clone() {
        return copyTo(createNewInstance());
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(Object target) {
        final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
        return copyTo(null, target, strategy);
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
        final Object draftCopy = ((target == null)?createNewInstance():target);
        if (draftCopy instanceof ImmobilienTransferTyp) {
            final ImmobilienTransferTyp copy = ((ImmobilienTransferTyp) draftCopy);
            {
                Boolean anbieterShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.anbieter!= null));
                if (anbieterShouldBeCopiedAndSet == Boolean.TRUE) {
                    ImmobilienTransferTyp.Anbieter sourceAnbieter;
                    sourceAnbieter = this.getAnbieter();
                    ImmobilienTransferTyp.Anbieter copyAnbieter = ((ImmobilienTransferTyp.Anbieter) strategy.copy(LocatorUtils.property(locator, "anbieter", sourceAnbieter), sourceAnbieter, (this.anbieter!= null)));
                    copy.setAnbieter(copyAnbieter);
                } else {
                    if (anbieterShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.anbieter = null;
                    }
                }
            }
            {
                Boolean emailBeiFehlerShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.emailBeiFehler!= null));
                if (emailBeiFehlerShouldBeCopiedAndSet == Boolean.TRUE) {
                    String sourceEmailBeiFehler;
                    sourceEmailBeiFehler = this.getEmailBeiFehler();
                    String copyEmailBeiFehler = ((String) strategy.copy(LocatorUtils.property(locator, "emailBeiFehler", sourceEmailBeiFehler), sourceEmailBeiFehler, (this.emailBeiFehler!= null)));
                    copy.setEmailBeiFehler(copyEmailBeiFehler);
                } else {
                    if (emailBeiFehlerShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.emailBeiFehler = null;
                    }
                }
            }
            {
                Boolean erstellerSoftwareShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.erstellerSoftware!= null));
                if (erstellerSoftwareShouldBeCopiedAndSet == Boolean.TRUE) {
                    String sourceErstellerSoftware;
                    sourceErstellerSoftware = this.getErstellerSoftware();
                    String copyErstellerSoftware = ((String) strategy.copy(LocatorUtils.property(locator, "erstellerSoftware", sourceErstellerSoftware), sourceErstellerSoftware, (this.erstellerSoftware!= null)));
                    copy.setErstellerSoftware(copyErstellerSoftware);
                } else {
                    if (erstellerSoftwareShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.erstellerSoftware = null;
                    }
                }
            }
            {
                Boolean erstellerSoftwareVersionShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.erstellerSoftwareVersion!= null));
                if (erstellerSoftwareVersionShouldBeCopiedAndSet == Boolean.TRUE) {
                    String sourceErstellerSoftwareVersion;
                    sourceErstellerSoftwareVersion = this.getErstellerSoftwareVersion();
                    String copyErstellerSoftwareVersion = ((String) strategy.copy(LocatorUtils.property(locator, "erstellerSoftwareVersion", sourceErstellerSoftwareVersion), sourceErstellerSoftwareVersion, (this.erstellerSoftwareVersion!= null)));
                    copy.setErstellerSoftwareVersion(copyErstellerSoftwareVersion);
                } else {
                    if (erstellerSoftwareVersionShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.erstellerSoftwareVersion = null;
                    }
                }
            }
        }
        return draftCopy;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public Object createNewInstance() {
        return new ImmobilienTransferTyp();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
        if ((object == null)||(this.getClass()!= object.getClass())) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final ImmobilienTransferTyp that = ((ImmobilienTransferTyp) object);
        {
            ImmobilienTransferTyp.Anbieter lhsAnbieter;
            lhsAnbieter = this.getAnbieter();
            ImmobilienTransferTyp.Anbieter rhsAnbieter;
            rhsAnbieter = that.getAnbieter();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "anbieter", lhsAnbieter), LocatorUtils.property(thatLocator, "anbieter", rhsAnbieter), lhsAnbieter, rhsAnbieter, (this.anbieter!= null), (that.anbieter!= null))) {
                return false;
            }
        }
        {
            String lhsEmailBeiFehler;
            lhsEmailBeiFehler = this.getEmailBeiFehler();
            String rhsEmailBeiFehler;
            rhsEmailBeiFehler = that.getEmailBeiFehler();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "emailBeiFehler", lhsEmailBeiFehler), LocatorUtils.property(thatLocator, "emailBeiFehler", rhsEmailBeiFehler), lhsEmailBeiFehler, rhsEmailBeiFehler, (this.emailBeiFehler!= null), (that.emailBeiFehler!= null))) {
                return false;
            }
        }
        {
            String lhsErstellerSoftware;
            lhsErstellerSoftware = this.getErstellerSoftware();
            String rhsErstellerSoftware;
            rhsErstellerSoftware = that.getErstellerSoftware();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "erstellerSoftware", lhsErstellerSoftware), LocatorUtils.property(thatLocator, "erstellerSoftware", rhsErstellerSoftware), lhsErstellerSoftware, rhsErstellerSoftware, (this.erstellerSoftware!= null), (that.erstellerSoftware!= null))) {
                return false;
            }
        }
        {
            String lhsErstellerSoftwareVersion;
            lhsErstellerSoftwareVersion = this.getErstellerSoftwareVersion();
            String rhsErstellerSoftwareVersion;
            rhsErstellerSoftwareVersion = that.getErstellerSoftwareVersion();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "erstellerSoftwareVersion", lhsErstellerSoftwareVersion), LocatorUtils.property(thatLocator, "erstellerSoftwareVersion", rhsErstellerSoftwareVersion), lhsErstellerSoftwareVersion, rhsErstellerSoftwareVersion, (this.erstellerSoftwareVersion!= null), (that.erstellerSoftwareVersion!= null))) {
                return false;
            }
        }
        return true;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(Object object) {
        final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
        return equals(null, null, object, strategy);
    }

    /**
     *
Java class for anonymous complex type.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *
     *

     * <complexType>
     *   <complexContent>
     *     <extension base="{http://www.immobilienscout24.de/immobilientransfer}AnbieterTyp">
     *       <sequence>
     *         <element ref="{http://www.immobilienscout24.de/immobilientransfer}VirtuelleImmobilie" maxOccurs="unbounded" minOccurs="0"/>
     *         <element ref="{http://www.immobilienscout24.de/immobilientransfer}Immobilie" maxOccurs="unbounded" minOccurs="0"/>
     *       </sequence>
     *     </extension>
     *   </complexContent>
     * </complexType>
     *

     *
     *
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "virtuelleImmobilie",
        "immobilie"
    })
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
    public static class Anbieter
        extends AnbieterTyp
        implements Serializable, Cloneable, CopyTo2, Equals2, ToString2
    {

        @XmlElementRef(name = "VirtuelleImmobilie", namespace = "http://www.immobilienscout24.de/immobilientransfer", type = JAXBElement.class, required = false)
        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        protected List<JAXBElement<? extends VirtuelleImmobilieBaseTyp>> virtuelleImmobilie;
        @XmlElementRef(name = "Immobilie", namespace = "http://www.immobilienscout24.de/immobilientransfer", type = JAXBElement.class, required = false)
        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        protected List<JAXBElement<? extends ImmobilieBaseTyp>> immobilie;

        /**
         * Gets the value of the virtuelleImmobilie property.
         *
         *

         * This accessor method returns a reference to the live list,
         * not a snapshot. Therefore any modification you make to the
         * returned list will be present inside the JAXB object.
         * This is why there is not a set method for the virtuelleImmobilie property.
         *
         *

         * For example, to add a new item, do as follows:
         *

         *    getVirtuelleImmobilie().add(newItem);
         *

         *
         *
         *

         * Objects of the following type(s) are allowed in the list
         * {@link JAXBElement }{@code <}{@link VirtuelleImmobilieBaseTyp }{@code >}
         * {@link JAXBElement }{@code <}{@link TypenHaus }{@code >}
         *
         *
         */
        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public List<JAXBElement<? extends VirtuelleImmobilieBaseTyp>> getVirtuelleImmobilie() {
            if (virtuelleImmobilie == null) {
                virtuelleImmobilie = new ArrayList<JAXBElement<? extends VirtuelleImmobilieBaseTyp>>();
            }
            return this.virtuelleImmobilie;
        }

        /**
         * Gets the value of the immobilie property.
         *
         *

         * This accessor method returns a reference to the live list,
         * not a snapshot. Therefore any modification you make to the
         * returned list will be present inside the JAXB object.
         * This is why there is not a set method for the immobilie property.
         *
         *

         * For example, to add a new item, do as follows:
         *

         *    getImmobilie().add(newItem);
         *

         *
         *
         *

         * Objects of the following type(s) are allowed in the list
         * {@link Zwangsversteigerung }
         * {@link WGZimmer }
         * {@link GrundstueckGewerbe }
         * {@link Gastronomie }
         * {@link SonstigeGewerbe }
         * {@link Einzelhandel }
         * {@link GarageKauf }
         * {@link JAXBElement }{@code <}{@link ImmobilieBaseTyp }{@code >}
         * {@link WohnungMiete }
         * {@link GrundstueckWohnenKauf }
         * {@link WAZ }
         * {@link GarageMiete }
         * {@link Anlageobjekt }
         * {@link WohnungKauf }
         * {@link HausMiete }
         * {@link BueroPraxis }
         * {@link HalleProduktion }
         * {@link JAXBElement }{@code <}{@link Grundstueck }{@code >}
         * {@link GrundstueckWohnenMiete }
         * {@link HausKauf }
         *
         *
         */
        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public List<JAXBElement<? extends ImmobilieBaseTyp>> getImmobilie() {
            if (immobilie == null) {
                immobilie = new ArrayList<JAXBElement<? extends ImmobilieBaseTyp>>();
            }
            return this.immobilie;
        }

        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public String toString() {
            final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
            final StringBuilder buffer = new StringBuilder();
            append(null, buffer, strategy);
            return buffer.toString();
        }

        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
            strategy.appendStart(locator, this, buffer);
            appendFields(locator, buffer, strategy);
            strategy.appendEnd(locator, this, buffer);
            return buffer;
        }

        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
            super.appendFields(locator, buffer, strategy);
            {
                List<JAXBElement<? extends VirtuelleImmobilieBaseTyp>> theVirtuelleImmobilie;
                theVirtuelleImmobilie = (((this.virtuelleImmobilie!= null)&&(!this.virtuelleImmobilie.isEmpty()))?this.getVirtuelleImmobilie():null);
                strategy.appendField(locator, this, "virtuelleImmobilie", buffer, theVirtuelleImmobilie, ((this.virtuelleImmobilie!= null)&&(!this.virtuelleImmobilie.isEmpty())));
            }
            {
                List<JAXBElement<? extends ImmobilieBaseTyp>> theImmobilie;
                theImmobilie = (((this.immobilie!= null)&&(!this.immobilie.isEmpty()))?this.getImmobilie():null);
                strategy.appendField(locator, this, "immobilie", buffer, theImmobilie, ((this.immobilie!= null)&&(!this.immobilie.isEmpty())));
            }
            return buffer;
        }

        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public Object clone() {
            return copyTo(createNewInstance());
        }

        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public Object copyTo(Object target) {
            final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
            return copyTo(null, target, strategy);
        }

        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
            final Object draftCopy = ((target == null)?createNewInstance():target);
            super.copyTo(locator, draftCopy, strategy);
            if (draftCopy instanceof ImmobilienTransferTyp.Anbieter) {
                final ImmobilienTransferTyp.Anbieter copy = ((ImmobilienTransferTyp.Anbieter) draftCopy);
                {
                    Boolean virtuelleImmobilieShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.virtuelleImmobilie!= null)&&(!this.virtuelleImmobilie.isEmpty())));
                    if (virtuelleImmobilieShouldBeCopiedAndSet == Boolean.TRUE) {
                        List<JAXBElement<? extends VirtuelleImmobilieBaseTyp>> sourceVirtuelleImmobilie;
                        sourceVirtuelleImmobilie = (((this.virtuelleImmobilie!= null)&&(!this.virtuelleImmobilie.isEmpty()))?this.getVirtuelleImmobilie():null);
                        @SuppressWarnings("unchecked")
                        List<JAXBElement<? extends VirtuelleImmobilieBaseTyp>> copyVirtuelleImmobilie = ((List<JAXBElement<? extends VirtuelleImmobilieBaseTyp>> ) strategy.copy(LocatorUtils.property(locator, "virtuelleImmobilie", sourceVirtuelleImmobilie), sourceVirtuelleImmobilie, ((this.virtuelleImmobilie!= null)&&(!this.virtuelleImmobilie.isEmpty()))));
                        copy.virtuelleImmobilie = null;
                        if (copyVirtuelleImmobilie!= null) {
                            List<JAXBElement<? extends VirtuelleImmobilieBaseTyp>> uniqueVirtuelleImmobiliel = copy.getVirtuelleImmobilie();
                            uniqueVirtuelleImmobiliel.addAll(copyVirtuelleImmobilie);
                        }
                    } else {
                        if (virtuelleImmobilieShouldBeCopiedAndSet == Boolean.FALSE) {
                            copy.virtuelleImmobilie = null;
                        }
                    }
                }
                {
                    Boolean immobilieShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.immobilie!= null)&&(!this.immobilie.isEmpty())));
                    if (immobilieShouldBeCopiedAndSet == Boolean.TRUE) {
                        List<JAXBElement<? extends ImmobilieBaseTyp>> sourceImmobilie;
                        sourceImmobilie = (((this.immobilie!= null)&&(!this.immobilie.isEmpty()))?this.getImmobilie():null);
                        @SuppressWarnings("unchecked")
                        List<JAXBElement<? extends ImmobilieBaseTyp>> copyImmobilie = ((List<JAXBElement<? extends ImmobilieBaseTyp>> ) strategy.copy(LocatorUtils.property(locator, "immobilie", sourceImmobilie), sourceImmobilie, ((this.immobilie!= null)&&(!this.immobilie.isEmpty()))));
                        copy.immobilie = null;
                        if (copyImmobilie!= null) {
                            List<JAXBElement<? extends ImmobilieBaseTyp>> uniqueImmobiliel = copy.getImmobilie();
                            uniqueImmobiliel.addAll(copyImmobilie);
                        }
                    } else {
                        if (immobilieShouldBeCopiedAndSet == Boolean.FALSE) {
                            copy.immobilie = null;
                        }
                    }
                }
            }
            return draftCopy;
        }

        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public Object createNewInstance() {
            return new ImmobilienTransferTyp.Anbieter();
        }

        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
            if ((object == null)||(this.getClass()!= object.getClass())) {
                return false;
            }
            if (this == object) {
                return true;
            }
            if (!super.equals(thisLocator, thatLocator, object, strategy)) {
                return false;
            }
            final ImmobilienTransferTyp.Anbieter that = ((ImmobilienTransferTyp.Anbieter) object);
            {
                List<JAXBElement<? extends VirtuelleImmobilieBaseTyp>> lhsVirtuelleImmobilie;
                lhsVirtuelleImmobilie = (((this.virtuelleImmobilie!= null)&&(!this.virtuelleImmobilie.isEmpty()))?this.getVirtuelleImmobilie():null);
                List<JAXBElement<? extends VirtuelleImmobilieBaseTyp>> rhsVirtuelleImmobilie;
                rhsVirtuelleImmobilie = (((that.virtuelleImmobilie!= null)&&(!that.virtuelleImmobilie.isEmpty()))?that.getVirtuelleImmobilie():null);
                if (!strategy.equals(LocatorUtils.property(thisLocator, "virtuelleImmobilie", lhsVirtuelleImmobilie), LocatorUtils.property(thatLocator, "virtuelleImmobilie", rhsVirtuelleImmobilie), lhsVirtuelleImmobilie, rhsVirtuelleImmobilie, ((this.virtuelleImmobilie!= null)&&(!this.virtuelleImmobilie.isEmpty())), ((that.virtuelleImmobilie!= null)&&(!that.virtuelleImmobilie.isEmpty())))) {
                    return false;
                }
            }
            {
                List<JAXBElement<? extends ImmobilieBaseTyp>> lhsImmobilie;
                lhsImmobilie = (((this.immobilie!= null)&&(!this.immobilie.isEmpty()))?this.getImmobilie():null);
                List<JAXBElement<? extends ImmobilieBaseTyp>> rhsImmobilie;
                rhsImmobilie = (((that.immobilie!= null)&&(!that.immobilie.isEmpty()))?that.getImmobilie():null);
                if (!strategy.equals(LocatorUtils.property(thisLocator, "immobilie", lhsImmobilie), LocatorUtils.property(thatLocator, "immobilie", rhsImmobilie), lhsImmobilie, rhsImmobilie, ((this.immobilie!= null)&&(!this.immobilie.isEmpty())), ((that.immobilie!= null)&&(!that.immobilie.isEmpty())))) {
                    return false;
                }
            }
            return true;
        }

        @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:52:47+02:00", comments = "JAXB RI v2.2.11")
        public boolean equals(Object object) {
            final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
            return equals(null, null, object, strategy);
        }

    }

}


package org.openestate.io.openimmo.xml;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.jvnet.jaxb2_commons.lang.CopyStrategy2;
import org.jvnet.jaxb2_commons.lang.CopyTo2;
import org.jvnet.jaxb2_commons.lang.Equals2;
import org.jvnet.jaxb2_commons.lang.EqualsStrategy2;
import org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBToStringStrategy;
import org.jvnet.jaxb2_commons.lang.ToString2;
import org.jvnet.jaxb2_commons.lang.ToStringStrategy2;
import org.jvnet.jaxb2_commons.locator.ObjectLocator;
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;

/**
 * Java class for <objektart> element.
 *
 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "zimmer",
    "wohnung",
    "haus",
    "grundstueck",
    "bueroPraxen",
    "einzelhandel",
    "gastgewerbe",
    "hallenLagerProd",
    "landUndForstwirtschaft",
    "parken",
    "sonstige",
    "freizeitimmobilieGewerblich",
    "zinshausRenditeobjekt",
    "objektartZusatz"
})
@XmlRootElement(name = "objektart")
@Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
public class Objektart implements Serializable, Cloneable, CopyTo2, Equals2, ToString2
{

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<Zimmer> zimmer;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<Wohnung> wohnung;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<Haus> haus;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<Grundstueck> grundstueck;
    @XmlElement(name = "buero_praxen")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<BueroPraxen> bueroPraxen;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<Einzelhandel> einzelhandel;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<Gastgewerbe> gastgewerbe;
    @XmlElement(name = "hallen_lager_prod")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<HallenLagerProd> hallenLagerProd;
    @XmlElement(name = "land_und_forstwirtschaft")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<LandUndForstwirtschaft> landUndForstwirtschaft;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<Parken> parken;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<Sonstige> sonstige;
    @XmlElement(name = "freizeitimmobilie_gewerblich")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<FreizeitimmobilieGewerblich> freizeitimmobilieGewerblich;
    @XmlElement(name = "zinshaus_renditeobjekt")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<ZinshausRenditeobjekt> zinshausRenditeobjekt;
    @XmlElement(name = "objektart_zusatz")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<String> objektartZusatz;

    /**
     * Gets the value of the zimmer property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the zimmer property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getZimmer().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link Zimmer }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<Zimmer> getZimmer() {
        if (zimmer == null) {
            zimmer = new ArrayList<Zimmer>();
        }
        return this.zimmer;
    }

    /**
     * Gets the value of the wohnung property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the wohnung property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getWohnung().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link Wohnung }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<Wohnung> getWohnung() {
        if (wohnung == null) {
            wohnung = new ArrayList<Wohnung>();
        }
        return this.wohnung;
    }

    /**
     * Gets the value of the haus property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the haus property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getHaus().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link Haus }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<Haus> getHaus() {
        if (haus == null) {
            haus = new ArrayList<Haus>();
        }
        return this.haus;
    }

    /**
     * Gets the value of the grundstueck property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the grundstueck property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getGrundstueck().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link Grundstueck }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<Grundstueck> getGrundstueck() {
        if (grundstueck == null) {
            grundstueck = new ArrayList<Grundstueck>();
        }
        return this.grundstueck;
    }

    /**
     * Gets the value of the bueroPraxen property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the bueroPraxen property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getBueroPraxen().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link BueroPraxen }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<BueroPraxen> getBueroPraxen() {
        if (bueroPraxen == null) {
            bueroPraxen = new ArrayList<BueroPraxen>();
        }
        return this.bueroPraxen;
    }

    /**
     * Gets the value of the einzelhandel property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the einzelhandel property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getEinzelhandel().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link Einzelhandel }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<Einzelhandel> getEinzelhandel() {
        if (einzelhandel == null) {
            einzelhandel = new ArrayList<Einzelhandel>();
        }
        return this.einzelhandel;
    }

    /**
     * Gets the value of the gastgewerbe property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the gastgewerbe property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getGastgewerbe().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link Gastgewerbe }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<Gastgewerbe> getGastgewerbe() {
        if (gastgewerbe == null) {
            gastgewerbe = new ArrayList<Gastgewerbe>();
        }
        return this.gastgewerbe;
    }

    /**
     * Gets the value of the hallenLagerProd property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the hallenLagerProd property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getHallenLagerProd().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link HallenLagerProd }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<HallenLagerProd> getHallenLagerProd() {
        if (hallenLagerProd == null) {
            hallenLagerProd = new ArrayList<HallenLagerProd>();
        }
        return this.hallenLagerProd;
    }

    /**
     * Gets the value of the landUndForstwirtschaft property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the landUndForstwirtschaft property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getLandUndForstwirtschaft().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link LandUndForstwirtschaft }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<LandUndForstwirtschaft> getLandUndForstwirtschaft() {
        if (landUndForstwirtschaft == null) {
            landUndForstwirtschaft = new ArrayList<LandUndForstwirtschaft>();
        }
        return this.landUndForstwirtschaft;
    }

    /**
     * Gets the value of the parken property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the parken property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getParken().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link Parken }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<Parken> getParken() {
        if (parken == null) {
            parken = new ArrayList<Parken>();
        }
        return this.parken;
    }

    /**
     * Gets the value of the sonstige property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the sonstige property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getSonstige().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link Sonstige }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<Sonstige> getSonstige() {
        if (sonstige == null) {
            sonstige = new ArrayList<Sonstige>();
        }
        return this.sonstige;
    }

    /**
     * Gets the value of the freizeitimmobilieGewerblich property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the freizeitimmobilieGewerblich property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getFreizeitimmobilieGewerblich().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link FreizeitimmobilieGewerblich }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<FreizeitimmobilieGewerblich> getFreizeitimmobilieGewerblich() {
        if (freizeitimmobilieGewerblich == null) {
            freizeitimmobilieGewerblich = new ArrayList<FreizeitimmobilieGewerblich>();
        }
        return this.freizeitimmobilieGewerblich;
    }

    /**
     * Gets the value of the zinshausRenditeobjekt property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the zinshausRenditeobjekt property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getZinshausRenditeobjekt().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link ZinshausRenditeobjekt }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<ZinshausRenditeobjekt> getZinshausRenditeobjekt() {
        if (zinshausRenditeobjekt == null) {
            zinshausRenditeobjekt = new ArrayList<ZinshausRenditeobjekt>();
        }
        return this.zinshausRenditeobjekt;
    }

    /**
     * Gets the value of the objektartZusatz property.
     *
     *

     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a set method for the objektartZusatz property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getObjektartZusatz().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link String }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<String> getObjektartZusatz() {
        if (objektartZusatz == null) {
            objektartZusatz = new ArrayList<String>();
        }
        return this.objektartZusatz;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public String toString() {
        final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
        final StringBuilder buffer = new StringBuilder();
        append(null, buffer, strategy);
        return buffer.toString();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        strategy.appendStart(locator, this, buffer);
        appendFields(locator, buffer, strategy);
        strategy.appendEnd(locator, this, buffer);
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        {
            List<Zimmer> theZimmer;
            theZimmer = (((this.zimmer!= null)&&(!this.zimmer.isEmpty()))?this.getZimmer():null);
            strategy.appendField(locator, this, "zimmer", buffer, theZimmer, ((this.zimmer!= null)&&(!this.zimmer.isEmpty())));
        }
        {
            List<Wohnung> theWohnung;
            theWohnung = (((this.wohnung!= null)&&(!this.wohnung.isEmpty()))?this.getWohnung():null);
            strategy.appendField(locator, this, "wohnung", buffer, theWohnung, ((this.wohnung!= null)&&(!this.wohnung.isEmpty())));
        }
        {
            List<Haus> theHaus;
            theHaus = (((this.haus!= null)&&(!this.haus.isEmpty()))?this.getHaus():null);
            strategy.appendField(locator, this, "haus", buffer, theHaus, ((this.haus!= null)&&(!this.haus.isEmpty())));
        }
        {
            List<Grundstueck> theGrundstueck;
            theGrundstueck = (((this.grundstueck!= null)&&(!this.grundstueck.isEmpty()))?this.getGrundstueck():null);
            strategy.appendField(locator, this, "grundstueck", buffer, theGrundstueck, ((this.grundstueck!= null)&&(!this.grundstueck.isEmpty())));
        }
        {
            List<BueroPraxen> theBueroPraxen;
            theBueroPraxen = (((this.bueroPraxen!= null)&&(!this.bueroPraxen.isEmpty()))?this.getBueroPraxen():null);
            strategy.appendField(locator, this, "bueroPraxen", buffer, theBueroPraxen, ((this.bueroPraxen!= null)&&(!this.bueroPraxen.isEmpty())));
        }
        {
            List<Einzelhandel> theEinzelhandel;
            theEinzelhandel = (((this.einzelhandel!= null)&&(!this.einzelhandel.isEmpty()))?this.getEinzelhandel():null);
            strategy.appendField(locator, this, "einzelhandel", buffer, theEinzelhandel, ((this.einzelhandel!= null)&&(!this.einzelhandel.isEmpty())));
        }
        {
            List<Gastgewerbe> theGastgewerbe;
            theGastgewerbe = (((this.gastgewerbe!= null)&&(!this.gastgewerbe.isEmpty()))?this.getGastgewerbe():null);
            strategy.appendField(locator, this, "gastgewerbe", buffer, theGastgewerbe, ((this.gastgewerbe!= null)&&(!this.gastgewerbe.isEmpty())));
        }
        {
            List<HallenLagerProd> theHallenLagerProd;
            theHallenLagerProd = (((this.hallenLagerProd!= null)&&(!this.hallenLagerProd.isEmpty()))?this.getHallenLagerProd():null);
            strategy.appendField(locator, this, "hallenLagerProd", buffer, theHallenLagerProd, ((this.hallenLagerProd!= null)&&(!this.hallenLagerProd.isEmpty())));
        }
        {
            List<LandUndForstwirtschaft> theLandUndForstwirtschaft;
            theLandUndForstwirtschaft = (((this.landUndForstwirtschaft!= null)&&(!this.landUndForstwirtschaft.isEmpty()))?this.getLandUndForstwirtschaft():null);
            strategy.appendField(locator, this, "landUndForstwirtschaft", buffer, theLandUndForstwirtschaft, ((this.landUndForstwirtschaft!= null)&&(!this.landUndForstwirtschaft.isEmpty())));
        }
        {
            List<Parken> theParken;
            theParken = (((this.parken!= null)&&(!this.parken.isEmpty()))?this.getParken():null);
            strategy.appendField(locator, this, "parken", buffer, theParken, ((this.parken!= null)&&(!this.parken.isEmpty())));
        }
        {
            List<Sonstige> theSonstige;
            theSonstige = (((this.sonstige!= null)&&(!this.sonstige.isEmpty()))?this.getSonstige():null);
            strategy.appendField(locator, this, "sonstige", buffer, theSonstige, ((this.sonstige!= null)&&(!this.sonstige.isEmpty())));
        }
        {
            List<FreizeitimmobilieGewerblich> theFreizeitimmobilieGewerblich;
            theFreizeitimmobilieGewerblich = (((this.freizeitimmobilieGewerblich!= null)&&(!this.freizeitimmobilieGewerblich.isEmpty()))?this.getFreizeitimmobilieGewerblich():null);
            strategy.appendField(locator, this, "freizeitimmobilieGewerblich", buffer, theFreizeitimmobilieGewerblich, ((this.freizeitimmobilieGewerblich!= null)&&(!this.freizeitimmobilieGewerblich.isEmpty())));
        }
        {
            List<ZinshausRenditeobjekt> theZinshausRenditeobjekt;
            theZinshausRenditeobjekt = (((this.zinshausRenditeobjekt!= null)&&(!this.zinshausRenditeobjekt.isEmpty()))?this.getZinshausRenditeobjekt():null);
            strategy.appendField(locator, this, "zinshausRenditeobjekt", buffer, theZinshausRenditeobjekt, ((this.zinshausRenditeobjekt!= null)&&(!this.zinshausRenditeobjekt.isEmpty())));
        }
        {
            List<String> theObjektartZusatz;
            theObjektartZusatz = (((this.objektartZusatz!= null)&&(!this.objektartZusatz.isEmpty()))?this.getObjektartZusatz():null);
            strategy.appendField(locator, this, "objektartZusatz", buffer, theObjektartZusatz, ((this.objektartZusatz!= null)&&(!this.objektartZusatz.isEmpty())));
        }
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object clone() {
        return copyTo(createNewInstance());
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(Object target) {
        final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
        return copyTo(null, target, strategy);
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
        final Object draftCopy = ((target == null)?createNewInstance():target);
        if (draftCopy instanceof Objektart) {
            final Objektart copy = ((Objektart) draftCopy);
            {
                Boolean zimmerShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.zimmer!= null)&&(!this.zimmer.isEmpty())));
                if (zimmerShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<Zimmer> sourceZimmer;
                    sourceZimmer = (((this.zimmer!= null)&&(!this.zimmer.isEmpty()))?this.getZimmer():null);
                    @SuppressWarnings("unchecked")
                    List<Zimmer> copyZimmer = ((List<Zimmer> ) strategy.copy(LocatorUtils.property(locator, "zimmer", sourceZimmer), sourceZimmer, ((this.zimmer!= null)&&(!this.zimmer.isEmpty()))));
                    copy.zimmer = null;
                    if (copyZimmer!= null) {
                        List<Zimmer> uniqueZimmerl = copy.getZimmer();
                        uniqueZimmerl.addAll(copyZimmer);
                    }
                } else {
                    if (zimmerShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.zimmer = null;
                    }
                }
            }
            {
                Boolean wohnungShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.wohnung!= null)&&(!this.wohnung.isEmpty())));
                if (wohnungShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<Wohnung> sourceWohnung;
                    sourceWohnung = (((this.wohnung!= null)&&(!this.wohnung.isEmpty()))?this.getWohnung():null);
                    @SuppressWarnings("unchecked")
                    List<Wohnung> copyWohnung = ((List<Wohnung> ) strategy.copy(LocatorUtils.property(locator, "wohnung", sourceWohnung), sourceWohnung, ((this.wohnung!= null)&&(!this.wohnung.isEmpty()))));
                    copy.wohnung = null;
                    if (copyWohnung!= null) {
                        List<Wohnung> uniqueWohnungl = copy.getWohnung();
                        uniqueWohnungl.addAll(copyWohnung);
                    }
                } else {
                    if (wohnungShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.wohnung = null;
                    }
                }
            }
            {
                Boolean hausShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.haus!= null)&&(!this.haus.isEmpty())));
                if (hausShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<Haus> sourceHaus;
                    sourceHaus = (((this.haus!= null)&&(!this.haus.isEmpty()))?this.getHaus():null);
                    @SuppressWarnings("unchecked")
                    List<Haus> copyHaus = ((List<Haus> ) strategy.copy(LocatorUtils.property(locator, "haus", sourceHaus), sourceHaus, ((this.haus!= null)&&(!this.haus.isEmpty()))));
                    copy.haus = null;
                    if (copyHaus!= null) {
                        List<Haus> uniqueHausl = copy.getHaus();
                        uniqueHausl.addAll(copyHaus);
                    }
                } else {
                    if (hausShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.haus = null;
                    }
                }
            }
            {
                Boolean grundstueckShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.grundstueck!= null)&&(!this.grundstueck.isEmpty())));
                if (grundstueckShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<Grundstueck> sourceGrundstueck;
                    sourceGrundstueck = (((this.grundstueck!= null)&&(!this.grundstueck.isEmpty()))?this.getGrundstueck():null);
                    @SuppressWarnings("unchecked")
                    List<Grundstueck> copyGrundstueck = ((List<Grundstueck> ) strategy.copy(LocatorUtils.property(locator, "grundstueck", sourceGrundstueck), sourceGrundstueck, ((this.grundstueck!= null)&&(!this.grundstueck.isEmpty()))));
                    copy.grundstueck = null;
                    if (copyGrundstueck!= null) {
                        List<Grundstueck> uniqueGrundstueckl = copy.getGrundstueck();
                        uniqueGrundstueckl.addAll(copyGrundstueck);
                    }
                } else {
                    if (grundstueckShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.grundstueck = null;
                    }
                }
            }
            {
                Boolean bueroPraxenShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.bueroPraxen!= null)&&(!this.bueroPraxen.isEmpty())));
                if (bueroPraxenShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<BueroPraxen> sourceBueroPraxen;
                    sourceBueroPraxen = (((this.bueroPraxen!= null)&&(!this.bueroPraxen.isEmpty()))?this.getBueroPraxen():null);
                    @SuppressWarnings("unchecked")
                    List<BueroPraxen> copyBueroPraxen = ((List<BueroPraxen> ) strategy.copy(LocatorUtils.property(locator, "bueroPraxen", sourceBueroPraxen), sourceBueroPraxen, ((this.bueroPraxen!= null)&&(!this.bueroPraxen.isEmpty()))));
                    copy.bueroPraxen = null;
                    if (copyBueroPraxen!= null) {
                        List<BueroPraxen> uniqueBueroPraxenl = copy.getBueroPraxen();
                        uniqueBueroPraxenl.addAll(copyBueroPraxen);
                    }
                } else {
                    if (bueroPraxenShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.bueroPraxen = null;
                    }
                }
            }
            {
                Boolean einzelhandelShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.einzelhandel!= null)&&(!this.einzelhandel.isEmpty())));
                if (einzelhandelShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<Einzelhandel> sourceEinzelhandel;
                    sourceEinzelhandel = (((this.einzelhandel!= null)&&(!this.einzelhandel.isEmpty()))?this.getEinzelhandel():null);
                    @SuppressWarnings("unchecked")
                    List<Einzelhandel> copyEinzelhandel = ((List<Einzelhandel> ) strategy.copy(LocatorUtils.property(locator, "einzelhandel", sourceEinzelhandel), sourceEinzelhandel, ((this.einzelhandel!= null)&&(!this.einzelhandel.isEmpty()))));
                    copy.einzelhandel = null;
                    if (copyEinzelhandel!= null) {
                        List<Einzelhandel> uniqueEinzelhandell = copy.getEinzelhandel();
                        uniqueEinzelhandell.addAll(copyEinzelhandel);
                    }
                } else {
                    if (einzelhandelShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.einzelhandel = null;
                    }
                }
            }
            {
                Boolean gastgewerbeShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.gastgewerbe!= null)&&(!this.gastgewerbe.isEmpty())));
                if (gastgewerbeShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<Gastgewerbe> sourceGastgewerbe;
                    sourceGastgewerbe = (((this.gastgewerbe!= null)&&(!this.gastgewerbe.isEmpty()))?this.getGastgewerbe():null);
                    @SuppressWarnings("unchecked")
                    List<Gastgewerbe> copyGastgewerbe = ((List<Gastgewerbe> ) strategy.copy(LocatorUtils.property(locator, "gastgewerbe", sourceGastgewerbe), sourceGastgewerbe, ((this.gastgewerbe!= null)&&(!this.gastgewerbe.isEmpty()))));
                    copy.gastgewerbe = null;
                    if (copyGastgewerbe!= null) {
                        List<Gastgewerbe> uniqueGastgewerbel = copy.getGastgewerbe();
                        uniqueGastgewerbel.addAll(copyGastgewerbe);
                    }
                } else {
                    if (gastgewerbeShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.gastgewerbe = null;
                    }
                }
            }
            {
                Boolean hallenLagerProdShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.hallenLagerProd!= null)&&(!this.hallenLagerProd.isEmpty())));
                if (hallenLagerProdShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<HallenLagerProd> sourceHallenLagerProd;
                    sourceHallenLagerProd = (((this.hallenLagerProd!= null)&&(!this.hallenLagerProd.isEmpty()))?this.getHallenLagerProd():null);
                    @SuppressWarnings("unchecked")
                    List<HallenLagerProd> copyHallenLagerProd = ((List<HallenLagerProd> ) strategy.copy(LocatorUtils.property(locator, "hallenLagerProd", sourceHallenLagerProd), sourceHallenLagerProd, ((this.hallenLagerProd!= null)&&(!this.hallenLagerProd.isEmpty()))));
                    copy.hallenLagerProd = null;
                    if (copyHallenLagerProd!= null) {
                        List<HallenLagerProd> uniqueHallenLagerProdl = copy.getHallenLagerProd();
                        uniqueHallenLagerProdl.addAll(copyHallenLagerProd);
                    }
                } else {
                    if (hallenLagerProdShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.hallenLagerProd = null;
                    }
                }
            }
            {
                Boolean landUndForstwirtschaftShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.landUndForstwirtschaft!= null)&&(!this.landUndForstwirtschaft.isEmpty())));
                if (landUndForstwirtschaftShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<LandUndForstwirtschaft> sourceLandUndForstwirtschaft;
                    sourceLandUndForstwirtschaft = (((this.landUndForstwirtschaft!= null)&&(!this.landUndForstwirtschaft.isEmpty()))?this.getLandUndForstwirtschaft():null);
                    @SuppressWarnings("unchecked")
                    List<LandUndForstwirtschaft> copyLandUndForstwirtschaft = ((List<LandUndForstwirtschaft> ) strategy.copy(LocatorUtils.property(locator, "landUndForstwirtschaft", sourceLandUndForstwirtschaft), sourceLandUndForstwirtschaft, ((this.landUndForstwirtschaft!= null)&&(!this.landUndForstwirtschaft.isEmpty()))));
                    copy.landUndForstwirtschaft = null;
                    if (copyLandUndForstwirtschaft!= null) {
                        List<LandUndForstwirtschaft> uniqueLandUndForstwirtschaftl = copy.getLandUndForstwirtschaft();
                        uniqueLandUndForstwirtschaftl.addAll(copyLandUndForstwirtschaft);
                    }
                } else {
                    if (landUndForstwirtschaftShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.landUndForstwirtschaft = null;
                    }
                }
            }
            {
                Boolean parkenShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.parken!= null)&&(!this.parken.isEmpty())));
                if (parkenShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<Parken> sourceParken;
                    sourceParken = (((this.parken!= null)&&(!this.parken.isEmpty()))?this.getParken():null);
                    @SuppressWarnings("unchecked")
                    List<Parken> copyParken = ((List<Parken> ) strategy.copy(LocatorUtils.property(locator, "parken", sourceParken), sourceParken, ((this.parken!= null)&&(!this.parken.isEmpty()))));
                    copy.parken = null;
                    if (copyParken!= null) {
                        List<Parken> uniqueParkenl = copy.getParken();
                        uniqueParkenl.addAll(copyParken);
                    }
                } else {
                    if (parkenShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.parken = null;
                    }
                }
            }
            {
                Boolean sonstigeShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.sonstige!= null)&&(!this.sonstige.isEmpty())));
                if (sonstigeShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<Sonstige> sourceSonstige;
                    sourceSonstige = (((this.sonstige!= null)&&(!this.sonstige.isEmpty()))?this.getSonstige():null);
                    @SuppressWarnings("unchecked")
                    List<Sonstige> copySonstige = ((List<Sonstige> ) strategy.copy(LocatorUtils.property(locator, "sonstige", sourceSonstige), sourceSonstige, ((this.sonstige!= null)&&(!this.sonstige.isEmpty()))));
                    copy.sonstige = null;
                    if (copySonstige!= null) {
                        List<Sonstige> uniqueSonstigel = copy.getSonstige();
                        uniqueSonstigel.addAll(copySonstige);
                    }
                } else {
                    if (sonstigeShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.sonstige = null;
                    }
                }
            }
            {
                Boolean freizeitimmobilieGewerblichShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.freizeitimmobilieGewerblich!= null)&&(!this.freizeitimmobilieGewerblich.isEmpty())));
                if (freizeitimmobilieGewerblichShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<FreizeitimmobilieGewerblich> sourceFreizeitimmobilieGewerblich;
                    sourceFreizeitimmobilieGewerblich = (((this.freizeitimmobilieGewerblich!= null)&&(!this.freizeitimmobilieGewerblich.isEmpty()))?this.getFreizeitimmobilieGewerblich():null);
                    @SuppressWarnings("unchecked")
                    List<FreizeitimmobilieGewerblich> copyFreizeitimmobilieGewerblich = ((List<FreizeitimmobilieGewerblich> ) strategy.copy(LocatorUtils.property(locator, "freizeitimmobilieGewerblich", sourceFreizeitimmobilieGewerblich), sourceFreizeitimmobilieGewerblich, ((this.freizeitimmobilieGewerblich!= null)&&(!this.freizeitimmobilieGewerblich.isEmpty()))));
                    copy.freizeitimmobilieGewerblich = null;
                    if (copyFreizeitimmobilieGewerblich!= null) {
                        List<FreizeitimmobilieGewerblich> uniqueFreizeitimmobilieGewerblichl = copy.getFreizeitimmobilieGewerblich();
                        uniqueFreizeitimmobilieGewerblichl.addAll(copyFreizeitimmobilieGewerblich);
                    }
                } else {
                    if (freizeitimmobilieGewerblichShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.freizeitimmobilieGewerblich = null;
                    }
                }
            }
            {
                Boolean zinshausRenditeobjektShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.zinshausRenditeobjekt!= null)&&(!this.zinshausRenditeobjekt.isEmpty())));
                if (zinshausRenditeobjektShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<ZinshausRenditeobjekt> sourceZinshausRenditeobjekt;
                    sourceZinshausRenditeobjekt = (((this.zinshausRenditeobjekt!= null)&&(!this.zinshausRenditeobjekt.isEmpty()))?this.getZinshausRenditeobjekt():null);
                    @SuppressWarnings("unchecked")
                    List<ZinshausRenditeobjekt> copyZinshausRenditeobjekt = ((List<ZinshausRenditeobjekt> ) strategy.copy(LocatorUtils.property(locator, "zinshausRenditeobjekt", sourceZinshausRenditeobjekt), sourceZinshausRenditeobjekt, ((this.zinshausRenditeobjekt!= null)&&(!this.zinshausRenditeobjekt.isEmpty()))));
                    copy.zinshausRenditeobjekt = null;
                    if (copyZinshausRenditeobjekt!= null) {
                        List<ZinshausRenditeobjekt> uniqueZinshausRenditeobjektl = copy.getZinshausRenditeobjekt();
                        uniqueZinshausRenditeobjektl.addAll(copyZinshausRenditeobjekt);
                    }
                } else {
                    if (zinshausRenditeobjektShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.zinshausRenditeobjekt = null;
                    }
                }
            }
            {
                Boolean objektartZusatzShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.objektartZusatz!= null)&&(!this.objektartZusatz.isEmpty())));
                if (objektartZusatzShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<String> sourceObjektartZusatz;
                    sourceObjektartZusatz = (((this.objektartZusatz!= null)&&(!this.objektartZusatz.isEmpty()))?this.getObjektartZusatz():null);
                    @SuppressWarnings("unchecked")
                    List<String> copyObjektartZusatz = ((List<String> ) strategy.copy(LocatorUtils.property(locator, "objektartZusatz", sourceObjektartZusatz), sourceObjektartZusatz, ((this.objektartZusatz!= null)&&(!this.objektartZusatz.isEmpty()))));
                    copy.objektartZusatz = null;
                    if (copyObjektartZusatz!= null) {
                        List<String> uniqueObjektartZusatzl = copy.getObjektartZusatz();
                        uniqueObjektartZusatzl.addAll(copyObjektartZusatz);
                    }
                } else {
                    if (objektartZusatzShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.objektartZusatz = null;
                    }
                }
            }
        }
        return draftCopy;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object createNewInstance() {
        return new Objektart();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
        if ((object == null)||(this.getClass()!= object.getClass())) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final Objektart that = ((Objektart) object);
        {
            List<Zimmer> lhsZimmer;
            lhsZimmer = (((this.zimmer!= null)&&(!this.zimmer.isEmpty()))?this.getZimmer():null);
            List<Zimmer> rhsZimmer;
            rhsZimmer = (((that.zimmer!= null)&&(!that.zimmer.isEmpty()))?that.getZimmer():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "zimmer", lhsZimmer), LocatorUtils.property(thatLocator, "zimmer", rhsZimmer), lhsZimmer, rhsZimmer, ((this.zimmer!= null)&&(!this.zimmer.isEmpty())), ((that.zimmer!= null)&&(!that.zimmer.isEmpty())))) {
                return false;
            }
        }
        {
            List<Wohnung> lhsWohnung;
            lhsWohnung = (((this.wohnung!= null)&&(!this.wohnung.isEmpty()))?this.getWohnung():null);
            List<Wohnung> rhsWohnung;
            rhsWohnung = (((that.wohnung!= null)&&(!that.wohnung.isEmpty()))?that.getWohnung():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "wohnung", lhsWohnung), LocatorUtils.property(thatLocator, "wohnung", rhsWohnung), lhsWohnung, rhsWohnung, ((this.wohnung!= null)&&(!this.wohnung.isEmpty())), ((that.wohnung!= null)&&(!that.wohnung.isEmpty())))) {
                return false;
            }
        }
        {
            List<Haus> lhsHaus;
            lhsHaus = (((this.haus!= null)&&(!this.haus.isEmpty()))?this.getHaus():null);
            List<Haus> rhsHaus;
            rhsHaus = (((that.haus!= null)&&(!that.haus.isEmpty()))?that.getHaus():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "haus", lhsHaus), LocatorUtils.property(thatLocator, "haus", rhsHaus), lhsHaus, rhsHaus, ((this.haus!= null)&&(!this.haus.isEmpty())), ((that.haus!= null)&&(!that.haus.isEmpty())))) {
                return false;
            }
        }
        {
            List<Grundstueck> lhsGrundstueck;
            lhsGrundstueck = (((this.grundstueck!= null)&&(!this.grundstueck.isEmpty()))?this.getGrundstueck():null);
            List<Grundstueck> rhsGrundstueck;
            rhsGrundstueck = (((that.grundstueck!= null)&&(!that.grundstueck.isEmpty()))?that.getGrundstueck():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "grundstueck", lhsGrundstueck), LocatorUtils.property(thatLocator, "grundstueck", rhsGrundstueck), lhsGrundstueck, rhsGrundstueck, ((this.grundstueck!= null)&&(!this.grundstueck.isEmpty())), ((that.grundstueck!= null)&&(!that.grundstueck.isEmpty())))) {
                return false;
            }
        }
        {
            List<BueroPraxen> lhsBueroPraxen;
            lhsBueroPraxen = (((this.bueroPraxen!= null)&&(!this.bueroPraxen.isEmpty()))?this.getBueroPraxen():null);
            List<BueroPraxen> rhsBueroPraxen;
            rhsBueroPraxen = (((that.bueroPraxen!= null)&&(!that.bueroPraxen.isEmpty()))?that.getBueroPraxen():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "bueroPraxen", lhsBueroPraxen), LocatorUtils.property(thatLocator, "bueroPraxen", rhsBueroPraxen), lhsBueroPraxen, rhsBueroPraxen, ((this.bueroPraxen!= null)&&(!this.bueroPraxen.isEmpty())), ((that.bueroPraxen!= null)&&(!that.bueroPraxen.isEmpty())))) {
                return false;
            }
        }
        {
            List<Einzelhandel> lhsEinzelhandel;
            lhsEinzelhandel = (((this.einzelhandel!= null)&&(!this.einzelhandel.isEmpty()))?this.getEinzelhandel():null);
            List<Einzelhandel> rhsEinzelhandel;
            rhsEinzelhandel = (((that.einzelhandel!= null)&&(!that.einzelhandel.isEmpty()))?that.getEinzelhandel():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "einzelhandel", lhsEinzelhandel), LocatorUtils.property(thatLocator, "einzelhandel", rhsEinzelhandel), lhsEinzelhandel, rhsEinzelhandel, ((this.einzelhandel!= null)&&(!this.einzelhandel.isEmpty())), ((that.einzelhandel!= null)&&(!that.einzelhandel.isEmpty())))) {
                return false;
            }
        }
        {
            List<Gastgewerbe> lhsGastgewerbe;
            lhsGastgewerbe = (((this.gastgewerbe!= null)&&(!this.gastgewerbe.isEmpty()))?this.getGastgewerbe():null);
            List<Gastgewerbe> rhsGastgewerbe;
            rhsGastgewerbe = (((that.gastgewerbe!= null)&&(!that.gastgewerbe.isEmpty()))?that.getGastgewerbe():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "gastgewerbe", lhsGastgewerbe), LocatorUtils.property(thatLocator, "gastgewerbe", rhsGastgewerbe), lhsGastgewerbe, rhsGastgewerbe, ((this.gastgewerbe!= null)&&(!this.gastgewerbe.isEmpty())), ((that.gastgewerbe!= null)&&(!that.gastgewerbe.isEmpty())))) {
                return false;
            }
        }
        {
            List<HallenLagerProd> lhsHallenLagerProd;
            lhsHallenLagerProd = (((this.hallenLagerProd!= null)&&(!this.hallenLagerProd.isEmpty()))?this.getHallenLagerProd():null);
            List<HallenLagerProd> rhsHallenLagerProd;
            rhsHallenLagerProd = (((that.hallenLagerProd!= null)&&(!that.hallenLagerProd.isEmpty()))?that.getHallenLagerProd():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "hallenLagerProd", lhsHallenLagerProd), LocatorUtils.property(thatLocator, "hallenLagerProd", rhsHallenLagerProd), lhsHallenLagerProd, rhsHallenLagerProd, ((this.hallenLagerProd!= null)&&(!this.hallenLagerProd.isEmpty())), ((that.hallenLagerProd!= null)&&(!that.hallenLagerProd.isEmpty())))) {
                return false;
            }
        }
        {
            List<LandUndForstwirtschaft> lhsLandUndForstwirtschaft;
            lhsLandUndForstwirtschaft = (((this.landUndForstwirtschaft!= null)&&(!this.landUndForstwirtschaft.isEmpty()))?this.getLandUndForstwirtschaft():null);
            List<LandUndForstwirtschaft> rhsLandUndForstwirtschaft;
            rhsLandUndForstwirtschaft = (((that.landUndForstwirtschaft!= null)&&(!that.landUndForstwirtschaft.isEmpty()))?that.getLandUndForstwirtschaft():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "landUndForstwirtschaft", lhsLandUndForstwirtschaft), LocatorUtils.property(thatLocator, "landUndForstwirtschaft", rhsLandUndForstwirtschaft), lhsLandUndForstwirtschaft, rhsLandUndForstwirtschaft, ((this.landUndForstwirtschaft!= null)&&(!this.landUndForstwirtschaft.isEmpty())), ((that.landUndForstwirtschaft!= null)&&(!that.landUndForstwirtschaft.isEmpty())))) {
                return false;
            }
        }
        {
            List<Parken> lhsParken;
            lhsParken = (((this.parken!= null)&&(!this.parken.isEmpty()))?this.getParken():null);
            List<Parken> rhsParken;
            rhsParken = (((that.parken!= null)&&(!that.parken.isEmpty()))?that.getParken():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "parken", lhsParken), LocatorUtils.property(thatLocator, "parken", rhsParken), lhsParken, rhsParken, ((this.parken!= null)&&(!this.parken.isEmpty())), ((that.parken!= null)&&(!that.parken.isEmpty())))) {
                return false;
            }
        }
        {
            List<Sonstige> lhsSonstige;
            lhsSonstige = (((this.sonstige!= null)&&(!this.sonstige.isEmpty()))?this.getSonstige():null);
            List<Sonstige> rhsSonstige;
            rhsSonstige = (((that.sonstige!= null)&&(!that.sonstige.isEmpty()))?that.getSonstige():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "sonstige", lhsSonstige), LocatorUtils.property(thatLocator, "sonstige", rhsSonstige), lhsSonstige, rhsSonstige, ((this.sonstige!= null)&&(!this.sonstige.isEmpty())), ((that.sonstige!= null)&&(!that.sonstige.isEmpty())))) {
                return false;
            }
        }
        {
            List<FreizeitimmobilieGewerblich> lhsFreizeitimmobilieGewerblich;
            lhsFreizeitimmobilieGewerblich = (((this.freizeitimmobilieGewerblich!= null)&&(!this.freizeitimmobilieGewerblich.isEmpty()))?this.getFreizeitimmobilieGewerblich():null);
            List<FreizeitimmobilieGewerblich> rhsFreizeitimmobilieGewerblich;
            rhsFreizeitimmobilieGewerblich = (((that.freizeitimmobilieGewerblich!= null)&&(!that.freizeitimmobilieGewerblich.isEmpty()))?that.getFreizeitimmobilieGewerblich():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "freizeitimmobilieGewerblich", lhsFreizeitimmobilieGewerblich), LocatorUtils.property(thatLocator, "freizeitimmobilieGewerblich", rhsFreizeitimmobilieGewerblich), lhsFreizeitimmobilieGewerblich, rhsFreizeitimmobilieGewerblich, ((this.freizeitimmobilieGewerblich!= null)&&(!this.freizeitimmobilieGewerblich.isEmpty())), ((that.freizeitimmobilieGewerblich!= null)&&(!that.freizeitimmobilieGewerblich.isEmpty())))) {
                return false;
            }
        }
        {
            List<ZinshausRenditeobjekt> lhsZinshausRenditeobjekt;
            lhsZinshausRenditeobjekt = (((this.zinshausRenditeobjekt!= null)&&(!this.zinshausRenditeobjekt.isEmpty()))?this.getZinshausRenditeobjekt():null);
            List<ZinshausRenditeobjekt> rhsZinshausRenditeobjekt;
            rhsZinshausRenditeobjekt = (((that.zinshausRenditeobjekt!= null)&&(!that.zinshausRenditeobjekt.isEmpty()))?that.getZinshausRenditeobjekt():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "zinshausRenditeobjekt", lhsZinshausRenditeobjekt), LocatorUtils.property(thatLocator, "zinshausRenditeobjekt", rhsZinshausRenditeobjekt), lhsZinshausRenditeobjekt, rhsZinshausRenditeobjekt, ((this.zinshausRenditeobjekt!= null)&&(!this.zinshausRenditeobjekt.isEmpty())), ((that.zinshausRenditeobjekt!= null)&&(!that.zinshausRenditeobjekt.isEmpty())))) {
                return false;
            }
        }
        {
            List<String> lhsObjektartZusatz;
            lhsObjektartZusatz = (((this.objektartZusatz!= null)&&(!this.objektartZusatz.isEmpty()))?this.getObjektartZusatz():null);
            List<String> rhsObjektartZusatz;
            rhsObjektartZusatz = (((that.objektartZusatz!= null)&&(!that.objektartZusatz.isEmpty()))?that.getObjektartZusatz():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "objektartZusatz", lhsObjektartZusatz), LocatorUtils.property(thatLocator, "objektartZusatz", rhsObjektartZusatz), lhsObjektartZusatz, rhsObjektartZusatz, ((this.objektartZusatz!= null)&&(!this.objektartZusatz.isEmpty())), ((that.objektartZusatz!= null)&&(!that.objektartZusatz.isEmpty())))) {
                return false;
            }
        }
        return true;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(Object object) {
        final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
        return equals(null, null, object, strategy);
    }

}