private boolean saveInternal(File file, boolean isInternal) {
        if (!isInternal && readOnly) { // unexpected situation, yet it's better
            // to back it up
            System.err.println("Attempt to save read-only map.");
            return false;
        }
        try {
            // Generating output Stream
            if (timerForAutomaticSaving != null) {
                timerForAutomaticSaving.cancel();
            }
            BufferedWriter fileout = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(file)));
            getXml(fileout);

            if (!isInternal) {
                setFile(file);
                setSaved(true);
            }
            scheduleTimerForAutomaticSaving();
            return true;
        } catch (FileNotFoundException e) {
            String message = Tools.expandPlaceholders(getText("save_failed"),
                    file.getName());
            if (!isInternal)
                getFrame().getController().errorMessage(message);
            else
                getFrame().out(message);
        } catch (Exception e) {
            logger.severe("Error in MindMapMapModel.save(): ");
            freemind.main.Resources.getInstance().logException(e);
        }
        scheduleTimerForAutomaticSaving();
        return false;
    }