class SummaryDataPointSnapshot extends DistributionDataPointSnapshot {

        private final Quantiles quantiles;


        /**
         * To create a new {@link SummaryDataPointSnapshot}, you can either call the constructor directly
         * or use the Builder with {@link SummaryDataPointSnapshot#builder()}.
         *
         * @param count                  total number of observations. Optional, pass -1 if not available.
         * @param sum                    sum of all observed values. Optional, pass {@link Double#NaN} if not available.
         * @param quantiles              must not be {@code null}. Use {@link Quantiles#EMPTY} if there are no quantiles.
         * @param labels                 must not be {@code null}. Use {@link Labels#EMPTY} if there are no labels.
         * @param exemplars              must not be {@code null}. Use {@link Exemplars#EMPTY} if there are no exemplars.
         * @param createdTimestampMillis timestamp (as in {@link System#currentTimeMillis()}) when this summary
         *                               data (this specific set of labels) was created.
         *                               Note that this refers to the creation of the timeseries,
         *                               not the creation of the snapshot.
         *                               The created timestamp optional. Use {@code 0L} if there is no created timestamp.
         */
        public SummaryDataPointSnapshot(long count, double sum, Quantiles quantiles, Labels labels, Exemplars exemplars, long createdTimestampMillis) {
            this(count, sum, quantiles, labels, exemplars, createdTimestampMillis, 0);
        }

        /**
         * Constructor with an additional scrape timestamp.
         * This is only useful in rare cases as the scrape timestamp is usually set by the Prometheus server
         * during scraping. Exceptions include mirroring metrics with given timestamps from other metric sources.
         */
        public SummaryDataPointSnapshot(long count, double sum, Quantiles quantiles, Labels labels, Exemplars exemplars, long createdTimestampMillis, long scrapeTimestampMillis) {
            super(count, sum, exemplars, labels, createdTimestampMillis, scrapeTimestampMillis);
            this.quantiles = quantiles;
            validate();
        }

        public Quantiles getQuantiles() {
            return quantiles;
        }

        private void validate() {<FILL_FUNCTION_BODY>}

        public static Builder builder() {
            return new Builder();
        }

        public static class Builder extends DistributionDataPointSnapshot.Builder<Builder> {

            private Quantiles quantiles = Quantiles.EMPTY;

            private Builder() {
            }

            @Override
            protected Builder self() {
                return this;
            }

            public Builder quantiles(Quantiles quantiles) {
                this.quantiles = quantiles;
                return this;
            }

            @Override
            public Builder count(long count) {
                super.count(count);
                return this;
            }

            public SummaryDataPointSnapshot build() {
                return new SummaryDataPointSnapshot(count, sum, quantiles, labels, exemplars, createdTimestampMillis, scrapeTimestampMillis);
            }
        }
    }

            for (Label label : getLabels()) {
                if (label.getName().equals("quantile")) {
                    throw new IllegalArgumentException("quantile is a reserved label name for summaries");
                }
            }
            if (quantiles == null) {
                throw new NullPointerException();
            }
        
<methods>public abstract List<? extends io.prometheus.metrics.model.snapshots.DataPointSnapshot> getDataPoints() ,public io.prometheus.metrics.model.snapshots.MetricMetadata getMetadata() <variables>protected final non-sealed List<? extends io.prometheus.metrics.model.snapshots.DataPointSnapshot> dataPoints,private final non-sealed io.prometheus.metrics.model.snapshots.MetricMetadata metadata