if (null != imports) imports.add("java.utils.List");
if (null != imports) imports.add("java.util.List");
   public static String getJavaType(String dbus, Set<String> imports, Map<StructStruct,String> structs, boolean container, boolean fullnames) throws DBusException   {      if (null == dbus || "".equals(dbus)) return "";            try {         switch(dbus.charAt(0)) {            case '(':               String name = "Struct";               if (null != structs) {                  int num = 1;                  while (null != structs.get(new StructStruct(name+num))) num++;                  name = name+num;                  structs.put(new StructStruct(name), dbus.substring(1, dbus.length()-1));               }               if (fullnames) return "org.freedesktop.dbus.Struct";               else return name;            case 'a':               if ('{' == dbus.charAt(1)) {                  if (null != imports) imports.add("java.utils.Map");                  if (fullnames) return "java.util.Map";                  else return "Map<"+getJavaType(dbus.substring(2,3), imports, structs, true, false)+", "+                     getJavaType(dbus.substring(3,dbus.length()-1), imports, structs, true, false)+">";               }               if (null != imports) imports.add("java.utils.List");               if (fullnames) return "java.util.List";               else return "List<"+getJavaType(dbus.substring(1), imports, structs, true, false) + ">";            case 'v':               if (null != imports) imports.add("org.freedesktop.dbus.Variant");               if (fullnames) return "org.freedesktop.dbus.Variant";               else return "Variant";            case 'b':               if (container) {                  if (fullnames) return "java.lang.Boolean";                  else return "Boolean";               }               else return "boolean";            case 'n':               if (container) {                  if (fullnames) return "java.lang.Short";                  else return "Short";               } else return "short";            case 'y':               if (container) {                  if (fullnames) return "java.lang.Byte";                  else return "Byte";               } else return "byte";            case 'o':               if (null != imports) imports.add("org.freedesktop.dbus.DBusInterface");               if (fullnames) return "org.freedesktop.dbus.DBusInterface";               else return "DBusInterface";            case 'q':               if (null != imports) imports.add("org.freedesktop.dbus.UInt16");               if (fullnames) return "org.freedesktop.dbus.UInt16";               else return "UInt16";            case 'i':               if (container) {                  if (fullnames) return "java.lang.Integer";                  else return "Integer";               } else return "int";            case 'u':               if (null != imports) imports.add("org.freedesktop.dbus.UInt32");               if (fullnames) return "org.freedesktop.dbus.UInt32";               else return "UInt32";            case 'x':               if (container) {                  if (fullnames) return "java.lang.Long";                  else return "Long";               } else return "long";            case 't':               if (null != imports) imports.add("org.freedesktop.dbus.UInt64");               if (fullnames) return "org.freedesktop.dbus.UInt64";               else return "UInt64";            case 'd':               if (container) {                  if (fullnames) return "java.lang.Double";                  else return "Double";               } else return "double";            case 's':               if (fullnames) return "java.lang.String";               else return "String";            default:               throw new DBusException("Failed to parse DBus type signature: "+dbus);         }      } catch (IndexOutOfBoundsException IOOBe) {         throw new DBusException("Failed to parse DBus type signature: "+dbus);      }   }