code: private <D extends ProductDimension> Comparator<D> getDeepComparator(D dimension) {
      @SuppressWarnings("unchecked")
      Comparator<D> comparator = (Comparator<D>) comparatorMap.get(dimension.getClass());
      Preconditions.checkArgument(comparator != null,
          "No comparator exists for %s. This comparator only supports comparisons of "
          + "ProductDimension subclasses supported by Shopping campaigns.", dimension);
      return comparator;
    }
docs: Returns the deep comparator that will compare the appropriate values between two instances of
  type D. Throws an IllegalArgumentException if {@code D} is a subclass of ProductDimension not
  supported by Shopping campaigns. As of v201409, the types not supported by Shopping campaigns
  are:
  <ul>
  <li>ProductAdWordsGrouping</li>
  <li>ProductAdWordsLabels</li>
  <li>ProductLegacyCondition</li>
  <li>ProductTypeFull</li>
  </ul>
  
  @throws IllegalArgumentException if {@code D} is not a dimension type supported by this
  comparator