public void checkOutFile( ByteBlob data, long mtime, String path, OnFileCollision onFileCollision, Run run )
		throws CollisionException, IOException
	{
		FileMetadata md = filesystem.getMetadata(path);
		if( md != null ) {
			switch( onFileCollision ) {
			case ABORT: throw new CollisionException(path+" already exists");
			case KEEP: return;
			case OVERWRITE: break;
			case ENSURE_SAME:
				throw new UnsupportedOperationException("ENSURE_SAME not yet supported");
			}
		}
		if( md != null && md.getFsObjectType() != FSObjectType.BLOB ) {
			throw new CollisionException(path+" is not a blob, but you're trying to overwrite it with one");
		}
		if( run == Run.ACTUAL ) {
			filesystem.putBlob(path, data, mtime);
		}
	}