// Path: src/name/admitriev/jhelper/exceptions/NotificationException.java
// public class NotificationException extends RuntimeException {
// 	private final String title;
// 	private final String content;
// 
// 	public NotificationException(String content) {
// 		this(content, (Throwable) null);
// 	}
// 
// 	public NotificationException(String content, Throwable cause) {
// 		super(content, cause);
// 		title = "";
// 		this.content = content;
// 	}
// 
// 	public NotificationException(String title, String content) {
// 		this(title, content, null);
// 	}
// 
// 	public NotificationException(String title, String content, Throwable cause) {
// 		super(title + ": " + content, cause);
// 		this.title = title;
// 		this.content = content;
// 	}
// 
// 	public String getTitle() {
// 		return title;
// 	}
// 
// 	public String getContent() {
// 		return content;
// 	}
// }


import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import name.admitriev.jhelper.exceptions.NotificationException;
import net.egork.chelper.util.OutputWriter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
package name.admitriev.jhelper.generation;



public class FileUtils {
	private FileUtils() {
	}

	public static OutputWriter getOutputWriter(VirtualFile virtualFile, Object requestor) {
		try {
			return new OutputWriter(virtualFile.getOutputStream(requestor));
		}
		catch (IOException e) {
			throw new NotificationException("Couldn't open virtual file to write", e);
		}
	}

	@Nullable
	private static VirtualFile findChild(VirtualFile file, @NotNull String child) {
		if (child.equals(".")) {
			return file;
		}
		if (child.equals("..")) {
			return file.getParent();
		}
// Path: src/name/admitriev/jhelper/exceptions/NotificationException.java
// public class NotificationException extends RuntimeException {
// 	private final String title;
// 	private final String content;
// 
// 	public NotificationException(String content) {
// 		this(content, (Throwable) null);
// 	}
// 
// 	public NotificationException(String content, Throwable cause) {
// 		super(content, cause);
// 		title = "";
// 		this.content = content;
// 	}
// 
// 	public NotificationException(String title, String content) {
// 		this(title, content, null);
// 	}
// 
// 	public NotificationException(String title, String content, Throwable cause) {
// 		super(title + ": " + content, cause);
// 		this.title = title;
// 		this.content = content;
// 	}
// 
// 	public String getTitle() {
// 		return title;
// 	}
// 
// 	public String getContent() {
// 		return content;
// 	}
// }


// Path: src/name/admitriev/jhelper/generation/FileUtils.java
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import name.admitriev.jhelper.exceptions.NotificationException;
import net.egork.chelper.util.OutputWriter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;

package name.admitriev.jhelper.generation;



public class FileUtils {
	private FileUtils() {
	}

	public static OutputWriter getOutputWriter(VirtualFile virtualFile, Object requestor) {
		try {
			return new OutputWriter(virtualFile.getOutputStream(requestor));
		}
		catch (IOException e) {
			throw new NotificationException("Couldn't open virtual file to write", e);
		}
	}

	@Nullable
	private static VirtualFile findChild(VirtualFile file, @NotNull String child) {
		if (child.equals(".")) {
			return file;
		}
		if (child.equals("..")) {
			return file.getParent();
		}
		return file.findChild(child);