+ public boolean containsType(Type t)
+ {
+ for (List<Map.Entry<Type, String>> l : bootstrapArgMap.values())
+ {
+ for (Map.Entry<Type, String> e : l)
+ {
+ if (e.getKey() == t)
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public List<Arg> getArgsOfType(Type t)
+ {
+ return getArgsOfType(t, new Opt[] {});
+ }
+
+ public List<Arg> getArgsOfType(Type t, Opt... opts)
+ {
+ List<Arg> args = new ArrayList<>();
+ for (Arg a : bootstrapArgMap.keySet())
+ {
+ if (!a.hasAllOptions(opts))
+ continue;
+
+ List<Map.Entry<Type, String>> l = bootstrapArgMap.get(a);
+ if (l.stream().anyMatch(e -> e.getKey() == t))
+ {
+ args.add(a);
+ }
+ }
+ return args;
+ }
+
+ public List<Map.Entry<Type, String>> getList(Arg a)