code: public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
     {
        byte[] buf = new byte[in.readInt()];
        in.readFully(buf);
        id = new String(buf, Constants.DEFAULT_ENCODING);
        int length = in.readInt();
        if (length > 0)
        {
           buf = new byte[length];
           in.readFully(buf);
           parentId = new String(buf, Constants.DEFAULT_ENCODING);
        }
        length = in.readInt();
        if (length > 0)
        {
           buf = new byte[length];
           in.readFully(buf);
           try
           {
              name = QPathEntry.parse(new String(buf, Constants.DEFAULT_ENCODING));
           }
           catch (Exception e)
           {
              throw new IOException("Deserialization error, could not parse the name. ", e);
           }
        }
        length = in.readInt();
        if (length > 0)
        {
           buf = new byte[length];
           in.readFully(buf);
           try
           {
              path = QPath.parse(new String(buf, Constants.DEFAULT_ENCODING));
           }
           catch (Exception e)
           {
              throw new IOException("Deserialization error, could not parse the path. ", e);
           }
        }
     }
docs: {@inheritDoc}
  
  We need to make it serializable mostly for distributed cache in case we
  don't allow local caching