### Question:
MoreElements implements Elements { public Map<String, AnnotationValue> getValuesWithDefaults(AnnotationMirror annotationMirror) { assertNotNull(annotationMirror); Map<String, AnnotationValue> map = new HashMap<>(); for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : getElementValuesWithDefaults(annotationMirror).entrySet()) { String key = entry.getKey().getSimpleName().toString(); AnnotationValue value = entry.getValue(); map.put(key, value); } return Collections.unmodifiableMap(map); } MoreElements(Context ctx, ProcessingEnvironment env); @Override PackageElement getPackageElement(CharSequence name); @Override TypeElement getTypeElement(CharSequence canonicalName); @Override Map<? extends ExecutableElement, ? extends AnnotationValue> getElementValuesWithDefaults(
      AnnotationMirror a); @Override String getDocComment(Element e); @Override boolean isDeprecated(Element e); @Override Name getBinaryName(TypeElement type); @Override PackageElement getPackageOf(Element type); @Override List<? extends Element> getAllMembers(TypeElement type); @Override List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e); @Override boolean hides(Element hider, Element hidden); @Override boolean overrides(
      ExecutableElement overrider, ExecutableElement overridden, TypeElement type); @Override String getConstantExpression(Object value); @Override void printElements(Writer w, Element... elements); @Override Name getName(CharSequence cs); @Override boolean isFunctionalInterface(TypeElement type); String getParameterName(VariableElement variableElement); TypeElement toTypeElement(Element element); TypeParameterElement toTypeParameterElement(Element element); ExecutableType toExecutableType(Element element); TypeElement getTypeElementFromBinaryName(String binaryName); TypeElement getTypeElement(Class<?> clazz); AnnotationMirror getAnnotationMirror(
      Element element, Class<? extends Annotation> annotationClass); AnnotationMirror getAnnotationMirror(Element element, String annotationClassName); ExecutableElement getNoArgConstructor(TypeElement typeElement); Map<String, AnnotationValue> getValuesWithoutDefaults(AnnotationMirror annotationMirror); Map<String, AnnotationValue> getValuesWithDefaults(AnnotationMirror annotationMirror); TypeParametersDef getTypeParametersDef(Parameterizable element); VariableElement getSingleParameterOfRecordConstructor(TypeElement record); boolean isVirtualDefaultMethod(TypeElement typeElement, ExecutableElement methodElement);  }### Answer:
@Test void getValuesWithDefaults() { addProcessor( new TestProcessor() { @Override protected void run() { TypeElement typeElement = ctx.getMoreElements().getTypeElement(Inner.class); AnnotationMirror annotationMirror = ctx.getMoreElements().getAnnotationMirror(typeElement, MyAnnotation.class); Map<String, AnnotationValue> map = ctx.getMoreElements().getValuesWithDefaults(annotationMirror); assertEquals(3, map.size()); assertEquals("aaa", map.get("key1").getValue()); assertEquals("bbb", map.get("key2").getValue()); assertEquals(2, map.get("key3").getValue()); } }); }