### Question:
SemanticUtils { public static List<Map<String, Object>> last(List<Map<String, Object>> params){ return Collections.singletonList(params.get(params.size()-1)); }  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 last(){ List<Map<String, Object>> params = Arrays.asList( named("a", 1), named("b",2), named("c", 3) ); List<Map<String, Object>> last = Collections.singletonList( named("c", 3) ); assertEquals(last, SemanticUtils.last(params)); }