var _writeFileSync = (filename, descriptor, onaction) => {
		var callOnAction = (action) =>
			justTry(() => onaction(action), (error) => console.error(error));
		var createInfo = (...action) =>
			new Info('mkfile', filename, action);
		var data = descriptor.data;
		var options = descriptor.options;
		var mkdiract = _mkdirSync(getParent(filename), onaction).action;
		return justTry(() => statSync(filename), () => write('create'), handleExist);
		function handleExist(statinfo) {
			if (statinfo.isDirectory()) {
				let rmact = _rmSync(filename, onaction).action;
				return write('create', ...flatArray(rmact));
			}
			if (statinfo.isFile()) {
				return write('edit');
			}
			throw new Error(`Can't write "${filename}" as a file`);
		}
		function write(type, ...nextact) {
			writeFileSync(filename, data, options);
			var action = new Action(type, filename, 'file');
			justTry(onaction, [action]);
			return createInfo(...flatArray(mkdiract), ...nextact, action);
		}
	};
		function write(type, ...nextact) {
			writeFileSync(filename, data, options);
			var action = new Action(type, filename, 'file');
			justTry(onaction, [action]);
			return createInfo(...flatArray(mkdiract), ...nextact, action);
		}
		var callOnAction = (action) =>
			justTry(() => onaction(action), (error) => console.error(error));