public static ACBrIniFile Load(Stream stream, Encoding encoding = null)
        {
            Guard.Against <ArgumentNullException>(stream == null, nameof(stream));

            encoding = encoding ?? ACBrEncoding.ISO88591;
            var iniFile = new ACBrIniFile {
                Encoding = encoding
            };

            using (var reader = new StreamReader(stream, iniFile.Encoding))
            {
                string line;
                var    section = string.Empty;
                while ((line = reader.ReadLine()) != null)
                {
                    line = line.Trim();

                    if (line.IsEmpty())
                    {
                        continue;
                    }
                    if (line.StartsWith(";"))
                    {
                        continue;
                    }

                    if (line.StartsWith("["))
                    {
                        section = line.Substring(1, line.Length - 2);
                        iniFile.sections.Add(new ACBrIniSection(iniFile, section));
                    }
                    else
                    {
                        if (section.IsEmpty())
                        {
                            continue;
                        }

                        var iniSection = iniFile[section];
                        var properties = line.Split('=');
                        iniSection.Add(properties[0], properties[1]);
                    }
                }
            }

            return(iniFile);
        }
 public ACBrIniSection(ACBrIniFile parent, string name)
 {
     Parent = parent;
     Name   = name;
 }