// Path: src/main/java/org/laborra/beantrace/BeanTraceException.java
// public class BeanTraceException extends RuntimeException {
//     public BeanTraceException(Throwable cause) {
//         super(cause);
//     }
// }


import org.laborra.beantrace.BeanTraceException;
import java.io.*;
package org.laborra.beantrace.renderers;



/**
 * Basic class to create graph renderers. They can be used to draw different king
 * of bean traces.
 *
 * @see org.laborra.beantrace.BeanTraces#printBeanTrace(Object, org.laborra.beantrace.renderers.GraphRenderer)
 * @see org.laborra.beantrace.TraceConfiguration#setGraphRenderer(org.laborra.beantrace.renderers.GraphRenderer)
 */
public class GraphRenderers {

    /**
     * Creates a new {@link GraphvizDotRenderer} that writes the contents to the given
     * appendable.
     */
    public static GraphvizDotRenderer newGraphviz(Writer output) {
        return new GraphvizDotRenderer(output);
    }

    /**
     * Shortcut to create a file graphviz renderer.
     *
     * @see #newGraphviz(Writer)
     */
    public static GraphvizDotRenderer newGraphviz(File outputFile) {
        try {
            return newGraphviz(new BufferedWriter(new FileWriter(outputFile), 1));
        } catch (IOException e) {
// Path: src/main/java/org/laborra/beantrace/BeanTraceException.java
// public class BeanTraceException extends RuntimeException {
//     public BeanTraceException(Throwable cause) {
//         super(cause);
//     }
// }


// Path: src/main/java/org/laborra/beantrace/renderers/GraphRenderers.java
import org.laborra.beantrace.BeanTraceException;
import java.io.*;

package org.laborra.beantrace.renderers;



/**
 * Basic class to create graph renderers. They can be used to draw different king
 * of bean traces.
 *
 * @see org.laborra.beantrace.BeanTraces#printBeanTrace(Object, org.laborra.beantrace.renderers.GraphRenderer)
 * @see org.laborra.beantrace.TraceConfiguration#setGraphRenderer(org.laborra.beantrace.renderers.GraphRenderer)
 */
public class GraphRenderers {

    /**
     * Creates a new {@link GraphvizDotRenderer} that writes the contents to the given
     * appendable.
     */
    public static GraphvizDotRenderer newGraphviz(Writer output) {
        return new GraphvizDotRenderer(output);
    }

    /**
     * Shortcut to create a file graphviz renderer.
     *
     * @see #newGraphviz(Writer)
     */
    public static GraphvizDotRenderer newGraphviz(File outputFile) {
        try {
            return newGraphviz(new BufferedWriter(new FileWriter(outputFile), 1));
        } catch (IOException e) {
            throw new BeanTraceException(e);