class SampleMultiCollector implements MultiCollector {

	public SampleMultiCollector() {
		super();
	}
	
	@Override
	public MetricSnapshots collect() {
		return new MetricSnapshots();
	}

	@Override
	public MetricSnapshots collect(PrometheusScrapeRequest scrapeRequest) {
		return collectMetricSnapshots(scrapeRequest);
	}

	protected MetricSnapshots collectMetricSnapshots(PrometheusScrapeRequest scrapeRequest) {<FILL_FUNCTION_BODY>}

	public List<String> getPrometheusNames() {
		List<String> names = new ArrayList<String>();
		names.add("x_calls_total");
		names.add("x_load");
		return names;
	}

}


		GaugeSnapshot.Builder gaugeBuilder = GaugeSnapshot.builder();
		gaugeBuilder.name("x_load").help("process load");

		CounterSnapshot.Builder counterBuilder = CounterSnapshot.builder();
		counterBuilder.name(PrometheusNaming.sanitizeMetricName("x_calls_total")).help("invocations");

		String[] targetNames = scrapeRequest.getParameterValues("target");
		String targetName;
		String[] procs = scrapeRequest.getParameterValues("proc");
		if (targetNames == null || targetNames.length == 0) {
			targetName = "defaultTarget";
			procs = null; //ignore procs param
		} else {
			targetName = targetNames[0];
		}
		Builder counterDataPointBuilder = CounterSnapshot.CounterDataPointSnapshot.builder();
		io.prometheus.metrics.model.snapshots.GaugeSnapshot.GaugeDataPointSnapshot.Builder gaugeDataPointBuilder = GaugeSnapshot.GaugeDataPointSnapshot.builder();
		Labels lbls = Labels.of("target", targetName);

		if (procs == null || procs.length == 0) {
			counterDataPointBuilder.labels(lbls.merge(Labels.of("proc", "defaultProc")));
			gaugeDataPointBuilder.labels(lbls.merge(Labels.of("proc", "defaultProc")));
			counterDataPointBuilder.value(70);
			gaugeDataPointBuilder.value(Math.random());

			counterBuilder.dataPoint(counterDataPointBuilder.build());
			gaugeBuilder.dataPoint(gaugeDataPointBuilder.build());

		} else {
			for (int i = 0; i < procs.length; i++) {
				counterDataPointBuilder.labels(lbls.merge(Labels.of("proc", procs[i])));
				gaugeDataPointBuilder.labels(lbls.merge(Labels.of("proc", procs[i])));
				counterDataPointBuilder.value(Math.random());
				gaugeDataPointBuilder.value(Math.random());

				counterBuilder.dataPoint(counterDataPointBuilder.build());
				gaugeBuilder.dataPoint(gaugeDataPointBuilder.build());
			}
		}
		Collection<MetricSnapshot> snaps = new ArrayList<MetricSnapshot>();
		snaps.add(counterBuilder.build());
		snaps.add(gaugeBuilder.build());
		MetricSnapshots msnaps = new MetricSnapshots(snaps);
		return msnaps;
	
<no_super_class>