### Question:
ServerContextImpl implements ServerContext { @Override public synchronized Meter registerMeter(String key) { checkIsRunning(); ParamChecker.notEmpty(key, "key"); key = getFullMetricKey(key, MetricType.METER); LOG.debug("'{}' - registerMeter({})", name, key); Meter meter = findMetric(MetricType.METER, key); if (meter == null) { meter = metricRegistry.register(key, new Meter()); } return meter; } ServerContextImpl(String name, String prefix, int asyncThreads,
      int asyncMaxQueued, int schedulerThreads); @SuppressWarnings("unchecked") synchronized void start(); synchronized void stop(); synchronized MetricRegistry getMetricRegistry(); @Override Scheduled scheduleExecution(Callable<Void> callable,
      long firstExecutionDelay, long executionInterval, TimeUnit timeUnit); @Override boolean asyncExecution(Callable<Void> callable); @Override boolean asyncExecution(Callable<Void> callable, long executionDelay,
      TimeUnit timeUnit); @Override String createMetricKey(String component, String key); @Override synchronized void registerGauge(String key, Gauge gauge); @Override synchronized Timer registerTimer(String key); @Override synchronized Meter registerMeter(String key);  }### Answer:
@Test public void testRegisterMeter() throws Exception { ServerContextImpl impl = new ServerContextImpl("llama", "Server Context", 50, 50, 2); try { impl.start(); String key = impl.createMetricKey("Test", "ServerContext"); Meter meter1 = impl.registerMeter(key); Meter meter2 = impl.registerMeter(key); Assert.assertEquals(meter1, meter2); String key2 = impl.createMetricKey("Test", "ServerContext 2"); Meter meter3 = impl.registerMeter(key2); Assert.assertNotSame(meter1, meter3); } finally { impl.stop(); } }