@Override public void refresh() {
        INodePrivate newRoot;
        try {
            newRoot = buildTree();
        } catch(Exception ex) {
            logger.error("failed to load pricing param: " + ex.getMessage());
            throw new IllegalStateException(ex);
        }
        try {
            w.lock();
            setRoot(newRoot);
        } finally { w.unlock(); }
    }