public static <T, T1> Map<T, T1> where(Map<T, T1> map, JFuncTT<Map.Entry<T, T1>, Boolean> func) {
   try {
     Map<T, T1> result = new HashMap<>();
     for (Map.Entry<T, T1> el : map.entrySet())
       if (func.invoke(el)) result.put(el.getKey(), el.getValue());
     return result;
   } catch (Exception ignore) {
     return new HashMap<>();
   }
 }
 public static <T, T1, T2> Map<T, T2> select(Map<T, T1> map, JFuncTT<T1, T2> func) {
   try {
     Map<T, T2> result = new HashMap<>();
     for (Map.Entry<T, T1> el : map.entrySet())
       result.put(el.getKey(), func.invoke(el.getValue()));
     return result;
   } catch (Exception ignore) {
     return new HashMap<>();
   }
 }