// Path: src/main/java/org/mybatis/generator/api/dom/OutputUtilities.java
// public class OutputUtilities {
//     private static final String lineSeparator;
// 
//     static {
//         String ls = System.getProperty("line.separator"); //$NON-NLS-1$
//         if (ls == null) {
//             ls = "\n"; //$NON-NLS-1$
//         }
//         lineSeparator = ls;
//     }
// 
//     /**
//      * Utility class - no instances allowed
//      */
//     private OutputUtilities() {
//         super();
//     }
// 
//     /**
//      * Utility method that indents the buffer by the default amount for Java
//      * (four spaces per indent level).
//      * 
//      * @param sb
//      *            a StringBuilder to append to
//      * @param indentLevel
//      *            the required indent level
//      */
//     public static void javaIndent(StringBuilder sb, int indentLevel) {
//         for (int i = 0; i < indentLevel; i++) {
//             sb.append("    "); //$NON-NLS-1$
//         }
//     }
// 
//     /**
//      * Utility method that indents the buffer by the default amount for XML (two
//      * spaces per indent level).
//      * 
//      * @param sb
//      *            a StringBuilder to append to
//      * @param indentLevel
//      *            the required indent level
//      */
//     public static void xmlIndent(StringBuilder sb, int indentLevel) {
//         for (int i = 0; i < indentLevel; i++) {
//             sb.append("  "); //$NON-NLS-1$
//         }
//     }
// 
//     /**
//      * Utility method. Adds a newline character to a StringBuilder.
//      * 
//      * @param sb
//      *            the StringBuilder to be appended to
//      */
//     public static void newLine(StringBuilder sb) {
//         sb.append(lineSeparator);
//     }
// 
//     /**
//      * returns a unique set of "import xxx;" Strings for the set of types
//      * 
//      * @param importedTypes
//      * @return
//      */
//     public static Set<String> calculateImports(
//             Set<FullyQualifiedJavaType> importedTypes) {
//         StringBuilder sb = new StringBuilder();
//         Set<String> importStrings = new TreeSet<String>();
//         for (FullyQualifiedJavaType fqjt : importedTypes) {
//             for (String importString : fqjt.getImportList()) {
//                 sb.setLength(0);
//                 sb.append("import "); //$NON-NLS-1$
//                 sb.append(importString);
//                 sb.append(';');
//                 importStrings.add(sb.toString());
//             }
//         }
// 
//         return importStrings;
//     }
// }


import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.mybatis.generator.api.dom.OutputUtilities;
    public List<InnerClass> getInnerClasses() {
        return innerClasses;
    }

    public void addInnerClass(InnerClass innerClass) {
        innerClasses.add(innerClass);
    }

    public List<InnerEnum> getInnerEnums() {
        return innerEnums;
    }

    public void addInnerEnum(InnerEnum innerEnum) {
        innerEnums.add(innerEnum);
    }

    public List<InitializationBlock> getInitializationBlocks() {
        return initializationBlocks;
    }

    public void addInitializationBlock(InitializationBlock initializationBlock) {
        initializationBlocks.add(initializationBlock);
    }

    public String getFormattedContent(int indentLevel) {
        StringBuilder sb = new StringBuilder();

        addFormattedJavadoc(sb, indentLevel);
        addFormattedAnnotations(sb, indentLevel);

// Path: src/main/java/org/mybatis/generator/api/dom/OutputUtilities.java
// public class OutputUtilities {
//     private static final String lineSeparator;
// 
//     static {
//         String ls = System.getProperty("line.separator"); //$NON-NLS-1$
//         if (ls == null) {
//             ls = "\n"; //$NON-NLS-1$
//         }
//         lineSeparator = ls;
//     }
// 
//     /**
//      * Utility class - no instances allowed
//      */
//     private OutputUtilities() {
//         super();
//     }
// 
//     /**
//      * Utility method that indents the buffer by the default amount for Java
//      * (four spaces per indent level).
//      * 
//      * @param sb
//      *            a StringBuilder to append to
//      * @param indentLevel
//      *            the required indent level
//      */
//     public static void javaIndent(StringBuilder sb, int indentLevel) {
//         for (int i = 0; i < indentLevel; i++) {
//             sb.append("    "); //$NON-NLS-1$
//         }
//     }
// 
//     /**
//      * Utility method that indents the buffer by the default amount for XML (two
//      * spaces per indent level).
//      * 
//      * @param sb
//      *            a StringBuilder to append to
//      * @param indentLevel
//      *            the required indent level
//      */
//     public static void xmlIndent(StringBuilder sb, int indentLevel) {
//         for (int i = 0; i < indentLevel; i++) {
//             sb.append("  "); //$NON-NLS-1$
//         }
//     }
// 
//     /**
//      * Utility method. Adds a newline character to a StringBuilder.
//      * 
//      * @param sb
//      *            the StringBuilder to be appended to
//      */
//     public static void newLine(StringBuilder sb) {
//         sb.append(lineSeparator);
//     }
// 
//     /**
//      * returns a unique set of "import xxx;" Strings for the set of types
//      * 
//      * @param importedTypes
//      * @return
//      */
//     public static Set<String> calculateImports(
//             Set<FullyQualifiedJavaType> importedTypes) {
//         StringBuilder sb = new StringBuilder();
//         Set<String> importStrings = new TreeSet<String>();
//         for (FullyQualifiedJavaType fqjt : importedTypes) {
//             for (String importString : fqjt.getImportList()) {
//                 sb.setLength(0);
//                 sb.append("import "); //$NON-NLS-1$
//                 sb.append(importString);
//                 sb.append(';');
//                 importStrings.add(sb.toString());
//             }
//         }
// 
//         return importStrings;
//     }
// }


// Path: src/main/java/org/mybatis/generator/api/dom/java/InnerClass.java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.mybatis.generator.api.dom.OutputUtilities;

    public List<InnerClass> getInnerClasses() {
        return innerClasses;
    }

    public void addInnerClass(InnerClass innerClass) {
        innerClasses.add(innerClass);
    }

    public List<InnerEnum> getInnerEnums() {
        return innerEnums;
    }

    public void addInnerEnum(InnerEnum innerEnum) {
        innerEnums.add(innerEnum);
    }

    public List<InitializationBlock> getInitializationBlocks() {
        return initializationBlocks;
    }

    public void addInitializationBlock(InitializationBlock initializationBlock) {
        initializationBlocks.add(initializationBlock);
    }

    public String getFormattedContent(int indentLevel) {
        StringBuilder sb = new StringBuilder();

        addFormattedJavadoc(sb, indentLevel);
        addFormattedAnnotations(sb, indentLevel);

        OutputUtilities.javaIndent(sb, indentLevel);