public CodeCompileUnit Compile(TypeSafeDataUnit dataUnit)
        {
            var compileUnit = new CodeCompileUnit();

            compileUnit.UserData.Add(Strings.CompileUnitUserDataKey, dataUnit.FileName);

            CompilerUtil.WriteHeader(compileUnit);

            var ns = new CodeNamespace(Namespace);

            compileUnit.Namespaces.Add(ns);

            var className = CompilerUtil.GetSafeName(dataUnit.ClassName, false, false);

            if (className != dataUnit.ClassName)
            {
                TSLog.LogWarning(LogCategory.Compile,
                                 string.Format("Class name was modified to conform to C# standards ({0} -> {1})", dataUnit.ClassName, className));
            }

            var container = CompilerUtil.CreateStaticType(className);

            CompilerUtil.AddTypeSafeTag(container);

            PopulateClass(dataUnit, container);

            ns.Types.Add(container);
            return(compileUnit);
        }
        public CodeCompileUnit Compile(ResourceDatabase database)
        {
            var unit = new CodeCompileUnit();

            unit.UserData.Add(Strings.CompileUnitUserDataKey, "Resources");

            CompilerUtil.WriteHeader(unit);

            var ns = new CodeNamespace(Namespace);

            unit.Namespaces.Add(ns);

            var container = CompilerUtil.CreateStaticType(ClassName);

            CompilerUtil.AddTypeSafeTag(container);

            WriteFolder(container, database.RootFolder);

            ns.Types.Add(container);

            return(unit);
        }