public Object copyTo(ObjectLocator locator, Object target, CopyStrategy strategy) {
   final Object draftCopy = ((target == null) ? createNewInstance() : target);
   if (draftCopy instanceof TimeCalendarEraPropertyType) {
     final TimeCalendarEraPropertyType copy = ((TimeCalendarEraPropertyType) draftCopy);
     if (this.isSetTimeCalendarEra()) {
       TimeCalendarEraType sourceTimeCalendarEra;
       sourceTimeCalendarEra = this.getTimeCalendarEra();
       TimeCalendarEraType copyTimeCalendarEra =
           ((TimeCalendarEraType)
               strategy.copy(
                   LocatorUtils.property(locator, "timeCalendarEra", sourceTimeCalendarEra),
                   sourceTimeCalendarEra));
       copy.setTimeCalendarEra(copyTimeCalendarEra);
     } else {
       copy.timeCalendarEra = null;
     }
     if (this.isSetOwns()) {
       boolean sourceOwns;
       sourceOwns = this.isOwns();
       boolean copyOwns =
           strategy.copy(LocatorUtils.property(locator, "owns", sourceOwns), sourceOwns);
       copy.setOwns(copyOwns);
     } else {
       copy.unsetOwns();
     }
     if (this.isSetNilReason()) {
       List<String> sourceNilReason;
       sourceNilReason = this.getNilReason();
       @SuppressWarnings("unchecked")
       List<String> copyNilReason =
           ((List<String>)
               strategy.copy(
                   LocatorUtils.property(locator, "nilReason", sourceNilReason), sourceNilReason));
       copy.unsetNilReason();
       List<String> uniqueNilReasonl = copy.getNilReason();
       uniqueNilReasonl.addAll(copyNilReason);
     } else {
       copy.unsetNilReason();
     }
     if (this.isSetRemoteSchema()) {
       String sourceRemoteSchema;
       sourceRemoteSchema = this.getRemoteSchema();
       String copyRemoteSchema =
           ((String)
               strategy.copy(
                   LocatorUtils.property(locator, "remoteSchema", sourceRemoteSchema),
                   sourceRemoteSchema));
       copy.setRemoteSchema(copyRemoteSchema);
     } else {
       copy.remoteSchema = null;
     }
     if (this.isSetHref()) {
       String sourceHref;
       sourceHref = this.getHref();
       String copyHref =
           ((String)
               strategy.copy(LocatorUtils.property(locator, "href", sourceHref), sourceHref));
       copy.setHref(copyHref);
     } else {
       copy.href = null;
     }
     if (this.isSetRole()) {
       String sourceRole;
       sourceRole = this.getRole();
       String copyRole =
           ((String)
               strategy.copy(LocatorUtils.property(locator, "role", sourceRole), sourceRole));
       copy.setRole(copyRole);
     } else {
       copy.role = null;
     }
     if (this.isSetArcrole()) {
       String sourceArcrole;
       sourceArcrole = this.getArcrole();
       String copyArcrole =
           ((String)
               strategy.copy(
                   LocatorUtils.property(locator, "arcrole", sourceArcrole), sourceArcrole));
       copy.setArcrole(copyArcrole);
     } else {
       copy.arcrole = null;
     }
     if (this.isSetTitle()) {
       String sourceTitle;
       sourceTitle = this.getTitle();
       String copyTitle =
           ((String)
               strategy.copy(LocatorUtils.property(locator, "title", sourceTitle), sourceTitle));
       copy.setTitle(copyTitle);
     } else {
       copy.title = null;
     }
     if (this.isSetShow()) {
       String sourceShow;
       sourceShow = this.getShow();
       String copyShow =
           ((String)
               strategy.copy(LocatorUtils.property(locator, "show", sourceShow), sourceShow));
       copy.setShow(copyShow);
     } else {
       copy.show = null;
     }
     if (this.isSetActuate()) {
       String sourceActuate;
       sourceActuate = this.getActuate();
       String copyActuate =
           ((String)
               strategy.copy(
                   LocatorUtils.property(locator, "actuate", sourceActuate), sourceActuate));
       copy.setActuate(copyActuate);
     } else {
       copy.actuate = null;
     }
   }
   return draftCopy;
 }
 public void mergeFrom(
     ObjectLocator leftLocator,
     ObjectLocator rightLocator,
     Object left,
     Object right,
     MergeStrategy strategy) {
   if (right instanceof TimeCalendarEraPropertyType) {
     final TimeCalendarEraPropertyType target = this;
     final TimeCalendarEraPropertyType leftObject = ((TimeCalendarEraPropertyType) left);
     final TimeCalendarEraPropertyType rightObject = ((TimeCalendarEraPropertyType) right);
     {
       TimeCalendarEraType lhsTimeCalendarEra;
       lhsTimeCalendarEra = leftObject.getTimeCalendarEra();
       TimeCalendarEraType rhsTimeCalendarEra;
       rhsTimeCalendarEra = rightObject.getTimeCalendarEra();
       target.setTimeCalendarEra(
           ((TimeCalendarEraType)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "timeCalendarEra", lhsTimeCalendarEra),
                   LocatorUtils.property(rightLocator, "timeCalendarEra", rhsTimeCalendarEra),
                   lhsTimeCalendarEra,
                   rhsTimeCalendarEra)));
     }
     {
       boolean lhsOwns;
       lhsOwns = leftObject.isOwns();
       boolean rhsOwns;
       rhsOwns = rightObject.isOwns();
       target.setOwns(
           ((boolean)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "owns", lhsOwns),
                   LocatorUtils.property(rightLocator, "owns", rhsOwns),
                   lhsOwns,
                   rhsOwns)));
     }
     {
       List<String> lhsNilReason;
       lhsNilReason = leftObject.getNilReason();
       List<String> rhsNilReason;
       rhsNilReason = rightObject.getNilReason();
       target.unsetNilReason();
       List<String> uniqueNilReasonl = target.getNilReason();
       uniqueNilReasonl.addAll(
           ((List<String>)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "nilReason", lhsNilReason),
                   LocatorUtils.property(rightLocator, "nilReason", rhsNilReason),
                   lhsNilReason,
                   rhsNilReason)));
     }
     {
       String lhsRemoteSchema;
       lhsRemoteSchema = leftObject.getRemoteSchema();
       String rhsRemoteSchema;
       rhsRemoteSchema = rightObject.getRemoteSchema();
       target.setRemoteSchema(
           ((String)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "remoteSchema", lhsRemoteSchema),
                   LocatorUtils.property(rightLocator, "remoteSchema", rhsRemoteSchema),
                   lhsRemoteSchema,
                   rhsRemoteSchema)));
     }
     {
       String lhsHref;
       lhsHref = leftObject.getHref();
       String rhsHref;
       rhsHref = rightObject.getHref();
       target.setHref(
           ((String)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "href", lhsHref),
                   LocatorUtils.property(rightLocator, "href", rhsHref),
                   lhsHref,
                   rhsHref)));
     }
     {
       String lhsRole;
       lhsRole = leftObject.getRole();
       String rhsRole;
       rhsRole = rightObject.getRole();
       target.setRole(
           ((String)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "role", lhsRole),
                   LocatorUtils.property(rightLocator, "role", rhsRole),
                   lhsRole,
                   rhsRole)));
     }
     {
       String lhsArcrole;
       lhsArcrole = leftObject.getArcrole();
       String rhsArcrole;
       rhsArcrole = rightObject.getArcrole();
       target.setArcrole(
           ((String)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "arcrole", lhsArcrole),
                   LocatorUtils.property(rightLocator, "arcrole", rhsArcrole),
                   lhsArcrole,
                   rhsArcrole)));
     }
     {
       String lhsTitle;
       lhsTitle = leftObject.getTitle();
       String rhsTitle;
       rhsTitle = rightObject.getTitle();
       target.setTitle(
           ((String)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "title", lhsTitle),
                   LocatorUtils.property(rightLocator, "title", rhsTitle),
                   lhsTitle,
                   rhsTitle)));
     }
     {
       String lhsShow;
       lhsShow = leftObject.getShow();
       String rhsShow;
       rhsShow = rightObject.getShow();
       target.setShow(
           ((String)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "show", lhsShow),
                   LocatorUtils.property(rightLocator, "show", rhsShow),
                   lhsShow,
                   rhsShow)));
     }
     {
       String lhsActuate;
       lhsActuate = leftObject.getActuate();
       String rhsActuate;
       rhsActuate = rightObject.getActuate();
       target.setActuate(
           ((String)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "actuate", lhsActuate),
                   LocatorUtils.property(rightLocator, "actuate", rhsActuate),
                   lhsActuate,
                   rhsActuate)));
     }
   }
 }
 public boolean equals(
     ObjectLocator thisLocator,
     ObjectLocator thatLocator,
     Object object,
     EqualsStrategy strategy) {
   if (!(object instanceof TimeCalendarEraPropertyType)) {
     return false;
   }
   if (this == object) {
     return true;
   }
   final TimeCalendarEraPropertyType that = ((TimeCalendarEraPropertyType) object);
   {
     TimeCalendarEraType lhsTimeCalendarEra;
     lhsTimeCalendarEra = this.getTimeCalendarEra();
     TimeCalendarEraType rhsTimeCalendarEra;
     rhsTimeCalendarEra = that.getTimeCalendarEra();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "timeCalendarEra", lhsTimeCalendarEra),
         LocatorUtils.property(thatLocator, "timeCalendarEra", rhsTimeCalendarEra),
         lhsTimeCalendarEra,
         rhsTimeCalendarEra)) {
       return false;
     }
   }
   {
     boolean lhsOwns;
     lhsOwns = this.isOwns();
     boolean rhsOwns;
     rhsOwns = that.isOwns();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "owns", lhsOwns),
         LocatorUtils.property(thatLocator, "owns", rhsOwns),
         lhsOwns,
         rhsOwns)) {
       return false;
     }
   }
   {
     List<String> lhsNilReason;
     lhsNilReason = this.getNilReason();
     List<String> rhsNilReason;
     rhsNilReason = that.getNilReason();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "nilReason", lhsNilReason),
         LocatorUtils.property(thatLocator, "nilReason", rhsNilReason),
         lhsNilReason,
         rhsNilReason)) {
       return false;
     }
   }
   {
     String lhsRemoteSchema;
     lhsRemoteSchema = this.getRemoteSchema();
     String rhsRemoteSchema;
     rhsRemoteSchema = that.getRemoteSchema();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "remoteSchema", lhsRemoteSchema),
         LocatorUtils.property(thatLocator, "remoteSchema", rhsRemoteSchema),
         lhsRemoteSchema,
         rhsRemoteSchema)) {
       return false;
     }
   }
   {
     String lhsHref;
     lhsHref = this.getHref();
     String rhsHref;
     rhsHref = that.getHref();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "href", lhsHref),
         LocatorUtils.property(thatLocator, "href", rhsHref),
         lhsHref,
         rhsHref)) {
       return false;
     }
   }
   {
     String lhsRole;
     lhsRole = this.getRole();
     String rhsRole;
     rhsRole = that.getRole();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "role", lhsRole),
         LocatorUtils.property(thatLocator, "role", rhsRole),
         lhsRole,
         rhsRole)) {
       return false;
     }
   }
   {
     String lhsArcrole;
     lhsArcrole = this.getArcrole();
     String rhsArcrole;
     rhsArcrole = that.getArcrole();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "arcrole", lhsArcrole),
         LocatorUtils.property(thatLocator, "arcrole", rhsArcrole),
         lhsArcrole,
         rhsArcrole)) {
       return false;
     }
   }
   {
     String lhsTitle;
     lhsTitle = this.getTitle();
     String rhsTitle;
     rhsTitle = that.getTitle();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "title", lhsTitle),
         LocatorUtils.property(thatLocator, "title", rhsTitle),
         lhsTitle,
         rhsTitle)) {
       return false;
     }
   }
   {
     String lhsShow;
     lhsShow = this.getShow();
     String rhsShow;
     rhsShow = that.getShow();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "show", lhsShow),
         LocatorUtils.property(thatLocator, "show", rhsShow),
         lhsShow,
         rhsShow)) {
       return false;
     }
   }
   {
     String lhsActuate;
     lhsActuate = this.getActuate();
     String rhsActuate;
     rhsActuate = that.getActuate();
     if (!strategy.equals(
         LocatorUtils.property(thisLocator, "actuate", lhsActuate),
         LocatorUtils.property(thatLocator, "actuate", rhsActuate),
         lhsActuate,
         rhsActuate)) {
       return false;
     }
   }
   return true;
 }