### Question:
GeciReflectionTools { public static CompoundParams getParameters(AnnotatedElement element, String generatorMnemonic) { final var strings = GeciAnnotationTools.getGecis(element); for (var string : strings) { var params = GeciAnnotationTools.getParameters(generatorMnemonic, string); if (params != null) { return params; } } return null; }  static CompoundParams getParameters(AnnotatedElement element, String generatorMnemonic); static Invoker invoke(String methodName); static String modifiersString(Method method); static String modifiersStringNoAccess(Method method); static String typeAsString(Member member); static String normalizeTypeName(String s); static String normalizeTypeName(String s, Class<?> klass); static String getGenericTypeName(Type t); static String getSimpleGenericClassName(Class<?> t); static String getLocalGenericClassName(Class<?> t); static Field[] getDeclaredFieldsSorted(Class<?> klass); static Field[] getAllFieldsSorted(Class<?> klass); static Method[] getDeclaredMethodsSorted(Class<?> klass); static Method[] getMethodsSorted(Class<?> klass); static Method[] getAllMethodsSorted(final Class<?> klass); static Class[] getAllClassesSorted(Class<?> klass); static Class[] getDeclaredClassesSorted(Class<?> klass); static Class[] getClassesSorted(Class<?> klass); static Method getMethod(Class<?> klass, String methodName, Class<?>... classes); static Field getField(Class<?> klass, String fieldName); static Class<?> classForName(String className); static String unmask(int modifiers); static int mask(String masks, int dfault); static final int PACKAGE; }### Answer:
@Test void testParameterFetcher() throws NoSuchFieldException { Field f = this.getClass().getDeclaredField("something"); var map = GeciReflectionTools.getParameters(f, "aaa"); assertNotNull(map); assertEquals(map.get("a"), "b"); assertEquals(map.get("b"), "c"); assertEquals(map.get("c"), "d"); assertEquals(map.get("a$"), "dollared"); assertEquals(map.get("b3"), "bthree"); assertEquals(map.get("_"), "-"); }
@Test void getParametersFromSource() { Source testSource = new AbstractTestSource() { @Override public java.util.Set<String> segmentNames() { return null; } @Override public void returns(List<String> lines) { } @Override public List<String> getLines() { return Arrays.asList(" " " private static Object something;", " private HashMap<Map<String, Integer>, Object> b;"); } @Override public Logger getLogger() { return null; } }; var map = GeciAnnotationTools.getParameters(testSource, "aaa", " assertNotNull(map); assertEquals(map.get("a"), "b"); assertEquals(map.get("b"), "c"); assertEquals(map.get("c"), "d"); assertEquals(map.get("a$"), "dollared"); assertEquals(map.get("b3"), "bthree"); assertEquals(map.get("_"), "-"); }