} else vs.add(new Variant(a));
} else if (Variant.class.isAssignableFrom((Class) t)) vs.addAll(PrimitizeRecurse(((Variant) a).getValue(), ((Variant) a).getType())); else vs.add(new Variant(a));
   public static List<Variant> PrimitizeRecurse(Object a, Type t)   {      List<Variant> vs = new Vector<Variant>();      if (t instanceof ParameterizedType) {         Class c = (Class) ((ParameterizedType) t).getRawType();         if (List.class.isAssignableFrom(c)) {            Object[] os = ((List) a).toArray();            Type[] ts = ((ParameterizedType) t).getActualTypeArguments();            for (int i = 0; i < os.length; i++)               vs.addAll(PrimitizeRecurse(os[i], ts[0]));         } else if (Map.class.isAssignableFrom(c)) {            Object[] os = ((Map) a).keySet().toArray();            Object[] ks = ((Map) a).values().toArray();            Type[] ts = ((ParameterizedType) t).getActualTypeArguments();            for (int i = 0; i < ks.length; i++)               vs.addAll(PrimitizeRecurse(ks[i], ts[0]));            for (int i = 0; i < os.length; i++)               vs.addAll(PrimitizeRecurse(os[i], ts[1]));         } else if (Struct.class.isAssignableFrom(c)) {            Object[] os;            try {               os = ((Struct) a).getParameters();            } catch (DBusException DBe) {               throw new DBusExecutionException(DBe.getMessage());            }            Type[] ts = ((ParameterizedType) t).getActualTypeArguments();            for (int i = 0; i < os.length; i++)               vs.addAll(PrimitizeRecurse(os[i], ts[i]));         } else if (Variant.class.isAssignableFrom(c)) {            vs.addAll(PrimitizeRecurse(((Variant) a).getValue(), ((Variant) a).getType()));         }      } else vs.add(new Variant(a));      return vs;   }