public void update(RuntimeStats stats)
    {
        if (stats == null) {
            return;
        }
        stats.getMetrics().forEach((name, newMetric) -> metrics.computeIfAbsent(name, k -> new RuntimeMetric(name, newMetric.getUnit())).set(newMetric));
    }
@Test
    public void testUpdate()
    {
        RuntimeStats stats1 = new RuntimeStats();
        stats1.addMetricValue(TEST_METRIC_NAME_1, NONE, 2);
        stats1.update(null);
        assertRuntimeMetricEquals(
                stats1.getMetric(TEST_METRIC_NAME_1),
                new RuntimeMetric(TEST_METRIC_NAME_1, NONE, 2, 1, 2, 2));

        RuntimeStats stats2 = new RuntimeStats();
        stats2.addMetricValue(TEST_METRIC_NAME_2, NONE, 2);
        stats1.update(stats2);
        assertRuntimeMetricEquals(
                stats1.getMetric(TEST_METRIC_NAME_1),
                new RuntimeMetric(TEST_METRIC_NAME_1, NONE, 2, 1, 2, 2));
        assertRuntimeMetricEquals(
                stats1.getMetric(TEST_METRIC_NAME_2),
                stats1.getMetric(TEST_METRIC_NAME_2));

        stats2.addMetricValue(TEST_METRIC_NAME_2, NONE, 4);
        stats1.update(stats2);
        assertRuntimeMetricEquals(
                stats1.getMetric(TEST_METRIC_NAME_2),
                stats1.getMetric(TEST_METRIC_NAME_2));

        stats2.addMetricValue(TEST_METRIC_NAME_NANO_1, NANO, 4);
        stats1.update(stats2);
        assertRuntimeMetricEquals(
                stats1.getMetric(TEST_METRIC_NAME_NANO_1),
                stats1.getMetric(TEST_METRIC_NAME_NANO_1));
    }