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;
 }