### Question:
TimedMethodOverloaded { @Timed(name = "overloadedTimedMethodWithNoArguments") public void overloadedTimedMethod() { }  @Timed(name = "overloadedTimedMethodWithNoArguments") void overloadedTimedMethod(); @Timed(name = "overloadedTimedMethodWithStringArgument") void overloadedTimedMethod(String string); @Timed(name = "overloadedTimedMethodWithListOfStringArgument") void overloadedTimedMethod(List<String> strings); @Timed(name = "overloadedTimedMethodWithObjectArgument") void overloadedTimedMethod(Object object);  }### Answer:
@Test public void callOverloadedTimedMethodOnce() { assertThat("Shared metric registry is not created", SharedMetricRegistries.names(), hasItem(REGISTRY_NAME)); MetricRegistry registry = SharedMetricRegistries.getOrCreate(REGISTRY_NAME); assertThat("Timers are not registered correctly", registry.getTimers().keySet(), is(equalTo(absoluteMetricNames()))); instance.overloadedTimedMethod(); instance.overloadedTimedMethod("string"); instance.overloadedTimedMethod(new Object()); instance.overloadedTimedMethod(Arrays.asList("string1", "string2")); assertThat("Timer counts are incorrect", registry.getTimers().values(), everyItem(Matchers.<Timer>hasProperty("count", equalTo(1L)))); }