private void realput(URL loc, byte[] data) {
        FileContents file;
        try {
            try {
                file = back.get(loc);
            } catch (FileNotFoundException e) {
                back.create(loc, data.length);
                file = back.get(loc);
            }
            if (file.getMaxLength() < data.length) {
                if (file.setMaxLength(data.length) < data.length) {
                    back.delete(loc);
                    return;
                }
            }
            OutputStream s = file.getOutputStream(true);
            try {
                s.write(data);
            } finally {
                s.close();
            }
        } catch (IOException e) {
            return;
        } catch (Exception e) {
        /* There seems to be a strange bug in NetX. */
            return;
        }
    }