public Object copyTo(ObjectLocator locator, Object target, CopyStrategy strategy) {
   if (null == target) {
     throw new IllegalArgumentException(
         "Target argument must not be null for abstract copyable classes.");
   }
   super.copyTo(locator, target, strategy);
   if (target instanceof AbstractTimePrimitiveType) {
     final AbstractTimePrimitiveType copy = ((AbstractTimePrimitiveType) target);
     if (this.isSetRelatedTime()) {
       List<RelatedTimeType> sourceRelatedTime;
       sourceRelatedTime = this.getRelatedTime();
       @SuppressWarnings("unchecked")
       List<RelatedTimeType> copyRelatedTime =
           ((List<RelatedTimeType>)
               strategy.copy(
                   LocatorUtils.property(locator, "relatedTime", sourceRelatedTime),
                   sourceRelatedTime));
       copy.unsetRelatedTime();
       List<RelatedTimeType> uniqueRelatedTimel = copy.getRelatedTime();
       uniqueRelatedTimel.addAll(copyRelatedTime);
     } else {
       copy.unsetRelatedTime();
     }
   }
   return target;
 }
 public void mergeFrom(
     ObjectLocator leftLocator,
     ObjectLocator rightLocator,
     Object left,
     Object right,
     MergeStrategy strategy) {
   super.mergeFrom(leftLocator, rightLocator, left, right, strategy);
   if (right instanceof AbstractTimePrimitiveType) {
     final AbstractTimePrimitiveType target = this;
     final AbstractTimePrimitiveType leftObject = ((AbstractTimePrimitiveType) left);
     final AbstractTimePrimitiveType rightObject = ((AbstractTimePrimitiveType) right);
     {
       List<RelatedTimeType> lhsRelatedTime;
       lhsRelatedTime = leftObject.getRelatedTime();
       List<RelatedTimeType> rhsRelatedTime;
       rhsRelatedTime = rightObject.getRelatedTime();
       target.unsetRelatedTime();
       List<RelatedTimeType> uniqueRelatedTimel = target.getRelatedTime();
       uniqueRelatedTimel.addAll(
           ((List<RelatedTimeType>)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "relatedTime", lhsRelatedTime),
                   LocatorUtils.property(rightLocator, "relatedTime", rhsRelatedTime),
                   lhsRelatedTime,
                   rhsRelatedTime)));
     }
   }
 }