if (file == null) { file = repository.getFileByName(SYMBOLSC_FILENAME); crypted = true; }
    private void reloadSymbols(IRepository repository) throws IOException {        boolean crypted = false;        IFile file = repository.getFileByName(SYMBOLS_FILENAME);        if (file == null) {            file = repository.getFileByName(SYMBOLSC_FILENAME);            crypted = true;        }        byte buffer[] = null;        Record record = getFileRecord(file, null);        if (record != null) {            if (symbolsLastModified == record.getLastModificationDate()) {                return;            }            buffer = record.getBuffer();        }        if (buffer == null || buffer.length == 0) {            symbolsLastModified = 0;            getServletContext().removeAttribute(JAVASCRIPT_SYMBOLS_PARAMETER);            return;        }        if (crypted) {            int l = (buffer[0] & 0xff);            byte key[] = new byte[l];            System.arraycopy(buffer, 1, key, 0, key.length);            byte nbuf[] = new byte[buffer.length - 1 - key.length];            System.arraycopy(buffer, 1 + key.length, nbuf, 0, nbuf.length);            buffer = nbuf;            try {                SecretKeySpec skey = new SecretKeySpec(key, "DES");                Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");                cipher.init(Cipher.DECRYPT_MODE, skey);                buffer = cipher.doFinal(buffer);            } catch (Throwable th) {                IOException ex = new IOException(                        "Can not decrypt symbols table !");                ex.initCause(th);                throw ex;            }        }        Map symbols = loadSymbols(buffer);        symbolsLastModified = record.getLastModificationDate();        getServletContext().setAttribute(JAVASCRIPT_SYMBOLS_PARAMETER, symbols);    }