### Question:
SemanticUtils { public static ChainMap<String, Object> named(String name, Object value){ ChainMap<String, Object> map = new ChainMap<>(); map.put(name, value); return map; }  static String _N(int item); static String _N_LONG(int item); static String _N_DOUBLE(int item); static ChainMap<String, Object> named(String name, Object value); static ChainMap<String, Object> value(Object value); static SemanticFunction valueFn(Object value); static List<Map<String, Object>> identity(List<Map<String, Object>> params); static List<Map<String, Object>> merge(List<Map<String, Object>> params); static List<Map<String, Object>> first(List<Map<String, Object>> params); static List<Map<String, Object>> last(List<Map<String, Object>> params); static SemanticFunction parseSemantics(String semantics); static SemanticFunction parseTemplate(Map<String, Object> template); final static String _IDENTITY; final static String _FIRST; final static String _LAST; final static String _MERGE; final static String _APPEND; final static String KEY_UNNAMED; }### Answer:
@Test void namedChain(){ Map<String, Object> target = new HashMap<String, Object>(){{ put("a", 1); put("b", new HashMap<String, Object>(){{ put("c", 3); }}); }}; Map<String, Object> map = named("a", 1) .named("b", named("c", 3)); assertEquals(target, map); }