public static void saveAsOutlinerDocument(OutlinerDocument document, FileProtocol protocol) {
		// grab the current doc info
		DocumentInfo currentDocInfo = document.getDocumentInfo() ;
		
		// clone it
		DocumentInfo cloneDocInfo = null;
		try {
			cloneDocInfo = (DocumentInfo) currentDocInfo.clone();
		} catch (CloneNotSupportedException cnse) {
			cnse.printStackTrace();
		}
		
		// attach the clone to the document 
		document.setDocumentInfo(cloneDocInfo);
		
		// if the user backs out on the operation
		boolean alreadyUsingDocumentSettings = document.settings.useDocumentSettings();
		
		// record the current use document settings state
		if (!alreadyUsingDocumentSettings) {
			document.settings.setUseDocumentSettings(true);
		}
		
		if (!protocol.selectFileToSave(document, FileProtocol.SAVE)) {
			
			// restore the current doc info
			document.setDocumentInfo(currentDocInfo);
			
			// restore the use document settings state
			if (!alreadyUsingDocumentSettings) {
				document.settings.setUseDocumentSettings(false);
			}
			return;
		}
		
		// go ahead and try the save
		FileMenu.saveFile(PropertyContainerUtil.getPropertyAsString(document.getDocumentInfo(), DocumentInfo.KEY_PATH), document, protocol, true);
	}