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 AbstractCoverageType) {
     final AbstractCoverageType copy = ((AbstractCoverageType) target);
     if (this.isSetDomainSet()) {
       JAXBElement<? extends DomainSetType> sourceDomainSet;
       sourceDomainSet = this.getDomainSet();
       @SuppressWarnings("unchecked")
       JAXBElement<? extends DomainSetType> copyDomainSet =
           ((JAXBElement<? extends DomainSetType>)
               strategy.copy(
                   LocatorUtils.property(locator, "domainSet", sourceDomainSet), sourceDomainSet));
       copy.setDomainSet(copyDomainSet);
     } else {
       copy.domainSet = null;
     }
     if (this.isSetRangeSet()) {
       RangeSetType sourceRangeSet;
       sourceRangeSet = this.getRangeSet();
       RangeSetType copyRangeSet =
           ((RangeSetType)
               strategy.copy(
                   LocatorUtils.property(locator, "rangeSet", sourceRangeSet), sourceRangeSet));
       copy.setRangeSet(copyRangeSet);
     } else {
       copy.rangeSet = null;
     }
   }
   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 AbstractCoverageType) {
     final AbstractCoverageType target = this;
     final AbstractCoverageType leftObject = ((AbstractCoverageType) left);
     final AbstractCoverageType rightObject = ((AbstractCoverageType) right);
     {
       JAXBElement<? extends DomainSetType> lhsDomainSet;
       lhsDomainSet = leftObject.getDomainSet();
       JAXBElement<? extends DomainSetType> rhsDomainSet;
       rhsDomainSet = rightObject.getDomainSet();
       target.setDomainSet(
           ((JAXBElement<? extends DomainSetType>)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "domainSet", lhsDomainSet),
                   LocatorUtils.property(rightLocator, "domainSet", rhsDomainSet),
                   lhsDomainSet,
                   rhsDomainSet)));
     }
     {
       RangeSetType lhsRangeSet;
       lhsRangeSet = leftObject.getRangeSet();
       RangeSetType rhsRangeSet;
       rhsRangeSet = rightObject.getRangeSet();
       target.setRangeSet(
           ((RangeSetType)
               strategy.merge(
                   LocatorUtils.property(leftLocator, "rangeSet", lhsRangeSet),
                   LocatorUtils.property(rightLocator, "rangeSet", rhsRangeSet),
                   lhsRangeSet,
                   rhsRangeSet)));
     }
   }
 }
 public AbstractCoverageType withDomainSet(JAXBElement<? extends DomainSetType> value) {
   setDomainSet(value);
   return this;
 }