if(out == null) return;
if(out != null) { if(path.endsWith(".gz")) out = new GZIPOutputStream(out);
	private void save()	{		OutputStream out = null;		VFSSession session = buffer.getVFSSession();		try		{			String[] args = { MiscUtilities.getFileName(path) };			setStatus(jEdit.getProperty("vfs.status.save",args));			// the entire save operation can be aborted...			setAbortable(true);			try			{				buffer.readLock();				out = vfs._createOutputStream(session,path,view);				if(out == null)					return;				if(path.endsWith(".gz"))					out = new GZIPOutputStream(out);				write(buffer,out);				// We only save markers to VFS's that support deletion.				// Otherwise, we will accumilate stale marks files.				if((vfs.getCapabilities() & VFS.DELETE_CAP) != 0					&& buffer.getMarkerCount() != 0)				{					setStatus(jEdit.getProperty("vfs.status.save-markers",args));					out = vfs._createOutputStream(session,markersPath,view);					if(out != null)						writeMarkers(buffer,out);				}				else					vfs._delete(session,markersPath,view);			}			catch(BadLocationException bl)			{				Log.log(Log.ERROR,this,bl);			}			catch(IOException io)			{				Log.log(Log.ERROR,this,io);				args[0] = io.toString();				VFSManager.error(view,"ioerror",args);			}			finally			{				buffer.readUnlock();			}		}		catch(WorkThread.Abort a)		{			if(out != null)			{				try				{					out.close();				}				catch(IOException io)				{				}			}		}		finally		{			try			{				vfs._saveComplete(buffer);				vfs._endVFSSession(session,view);			}			catch(IOException io)			{				Log.log(Log.ERROR,this,io);				String[] args = { io.getMessage() };				VFSManager.error(view,"ioerror",args);			}			catch(WorkThread.Abort a)			{			}		}	}