### Question:
AnnotationExtractor { Log.in synthesizeLogIn(Log log) { return synthesizeAnnotation(getAnnotationAttributes(log), Log.in.class, null); } private  AnnotationExtractor(); static AnnotationExtractor getInstance(); Set<Method> getCandidateMethods(Class<?> clazz); boolean hasAnyAnnotation(Method method); boolean hasAnyAnnotation(Parameter parameter); Set<Log> getLogs(Method method); Set<Log.in> getLogIns(Method method); Set<Log.out> getLogOuts(Method method); Set<Log.error> getLogErrors(Method method); Set<Mdc> getMdcs(Method method); List<Set<Log>> getParameterLogs(Method method); List<Set<Mdc>> getParametersMdcs(Method method);  }### Answer:
@Test public void synthesizeLogIn() { Map<String, Object> attributes = new HashMap<>(); attributes.put("level", ERROR); attributes.put("ifEnabled", WARN); attributes.put("verbose", INFO); attributes.put("printer", "printer"); attributes.put("logger", "logger"); Log log = AnnotationUtils.synthesizeAnnotation(attributes, Log.class, null); Log.in logIn = annotationExtractor.synthesizeLogIn(log); assertThat(logIn.level(), is(ERROR)); assertThat(logIn.ifEnabled(), is(WARN)); assertThat(logIn.verbose(), is(INFO)); assertThat(logIn.printer(), is("printer")); assertThat(logIn.logger(), is("logger")); }