internal void Build()
        {
            foreach (var area in Areas)
            {
                if (area.Options.AuthorizeByDefault)
                {
                    AuthorizeByDefaultNamespaces.AddRange(area.Options.Modules);
                }

                if (!String.IsNullOrWhiteSpace(area.Options.RequestPathPrefix))
                {
                    foreach (var module in area.Options.Modules)
                    {
                        if (!RequestPrefix.ContainsKey(module))
                        {
                            RequestPrefix.Add(module, area.Options.RequestPathPrefix);
                        }
                    }
                }

                //module assembly check.
                foreach (var module in area.Modules)
                {
                    if (!module.HasAssembly)
                    {
                        throw new Exception($"Module {module.Options.Id} Assembly is null");
                    }
                }
            }
        }
 internal override int GetDataHashCode()
 {
     return(Sequence.GetHashCode(BitSequence.Merge(PrefixLength, RequestPrefix.ToByte()), HomeAddress));
 }