public bool CheckForNecessaryResets(MemberInfo member, object settingsNode, object propertyValue)
            {
                if (propertyValue == null)
                {
                    return(true);
                }

                var dict = (XmlDictionary <string, CompilerConfigurationNode>)propertyValue;

                if (dict.Count == 0)
                {
                    return(true);
                }

                foreach (var kvp in dict.ToList())
                {
                    if (kvp.Value != null && kvp.Value.OpenSimCompilerSettings != null)
                    {
                        DefaultValueInitializer.DoNeccessaryResets(kvp.Value);
                        continue;
                    }

                    var initNode = new CompilerConfigurationNode();
                    dict[kvp.Key] = initNode;
                    DefaultValueInitializer.Init(initNode);
                }

                return(false);
            }
            public object GetDefaultValue(MemberInfo member, object settingsNode)
            {
                var d = new XmlDictionary <string, CompilerConfigurationNode>();


                var clientCode = new CompilerConfigurationNode
                {
                    OpenSimCompilerSettings = LSLOpenSimCompilerSettings.CreateOpenSimClientSide()
                };

                clientCode.OpenSimCompilerSettings.ScriptHeader = ClientSideScriptCompilerHeader;
                d.Add("OpenSim Client Code", clientCode);


                var clientCodeCoOp = new CompilerConfigurationNode
                {
                    OpenSimCompilerSettings = LSLOpenSimCompilerSettings.CreateOpenSimClientSide()
                };

                clientCodeCoOp.OpenSimCompilerSettings.ScriptHeader = ClientSideScriptCompilerHeader;
                clientCodeCoOp.OpenSimCompilerSettings.InsertCoOpTerminationCalls = true;


                d.Add("OpenSim Client Code (co-op Stop)", clientCodeCoOp);


                var serverCode = new CompilerConfigurationNode
                {
                    OpenSimCompilerSettings = LSLOpenSimCompilerSettings.CreateOpenSimServerSide()
                };

                serverCode.OpenSimCompilerSettings.ScriptHeader = ServerSideScriptCompilerHeader;
                d.Add("OpenSim Server Code", serverCode);


                var serverCodeCoOp = new CompilerConfigurationNode
                {
                    OpenSimCompilerSettings = LSLOpenSimCompilerSettings.CreateOpenSimServerSide()
                };

                serverCodeCoOp.OpenSimCompilerSettings.ScriptHeader = ServerSideScriptCompilerHeader;
                serverCodeCoOp.OpenSimCompilerSettings.InsertCoOpTerminationCalls = true;


                d.Add("OpenSim Server Code (co-op Stop)", serverCodeCoOp);


                return(d);
            }