private Object decode(String in) throws RegistryException {
    StringTokenizer stok = new StringTokenizer(in, "|");
    ArrayList list = new ArrayList();
    while (stok.hasMoreTokens()) {
      list.add(stok.nextToken());
    }
    byte[] byteList = new byte[list.size()];
    for (int l = 0; l < list.size(); l++) {
      byteList[l] = Byte.parseByte((String) list.get(l));
    }

    try {
      ByteArrayInputStream bais = new ByteArrayInputStream(byteList);
      ObjectInputStream ois = new ObjectInputStream(bais);
      Object o = ois.readObject();
      ois.close();
      bais.close();
      return o;
    }
    catch (IOException ex) {
      throw new RegistryException("cannot decode object", ex);
    }
    catch (ClassNotFoundException ex) {
      throw new RegistryException("cannot decode object", ex);
    }
  }