public Set<Range<Double>> getValidScaleRanges() {
    HashSet<Range<Double>> ranges = new HashSet<Range<Double>>();
    try {
      Layer layer = context.getGeoResource().resolve(Layer.class, ProgressManager.instance().get());
      double min = layer.getScaleDenominatorMin();
      double max = layer.getScaleDenominatorMax();
      if (invalidScale(min) && invalidScale(max)) {
        return ranges;
      }

      if (invalidScale(min)) {
        min = Double.MIN_VALUE;
      }
      if (invalidScale(max)) {
        max = Double.MAX_VALUE;
      }
      if (min < max) {
        ranges.add(new Range<Double>(Double.class, min, max));
      } else {
        ranges.add(new Range<Double>(Double.class, max, min));
      }
    } catch (IOException e) {
      throw (RuntimeException) new RuntimeException().initCause(e);
    }
    return ranges;
  }