public void mergeFrom(
     ObjectLocator leftLocator,
     ObjectLocator rightLocator,
     Object left,
     Object right,
     MergeStrategy strategy) {
   super.mergeFrom(leftLocator, rightLocator, left, right, strategy);
   if (right instanceof RelatedTimeType) {
     final RelatedTimeType target = this;
     final RelatedTimeType leftObject = ((RelatedTimeType) left);
     final RelatedTimeType rightObject = ((RelatedTimeType) right);
     {
       String lhsRelativePosition;
       lhsRelativePosition = leftObject.getRelativePosition();
       String rhsRelativePosition;
       rhsRelativePosition = rightObject.getRelativePosition();
       target.setRelativePosition(
           ((String)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "relativePosition", lhsRelativePosition),
                   LocatorUtils.property(rightLocator, "relativePosition", rhsRelativePosition),
                   lhsRelativePosition,
                   rhsRelativePosition)));
     }
   }
 }
 public Object copyTo(ObjectLocator locator, Object target, CopyStrategy strategy) {
   final Object draftCopy = ((target == null) ? createNewInstance() : target);
   super.copyTo(locator, draftCopy, strategy);
   if (draftCopy instanceof RelatedTimeType) {
     final RelatedTimeType copy = ((RelatedTimeType) draftCopy);
     if (this.isSetRelativePosition()) {
       String sourceRelativePosition;
       sourceRelativePosition = this.getRelativePosition();
       String copyRelativePosition =
           ((String)
               strategy.copy(
                   LocatorUtils.property(locator, "relativePosition", sourceRelativePosition),
                   sourceRelativePosition));
       copy.setRelativePosition(copyRelativePosition);
     } else {
       copy.relativePosition = null;
     }
   }
   return draftCopy;
 }
 public RelatedTimeType withRelativePosition(String value) {
   setRelativePosition(value);
   return this;
 }