public ModuleItem(ObjectModule module)
            {
                if (module == null)
                {
                    throw new ArgumentNullException("module");
                }

                this.Module  = module;
                this.Symbols = new List <ITreeNode>();

                ConstantSegmentItem constantGroup = new ConstantSegmentItem(module);

                if (constantGroup.HasChildren)
                {
                    this.Symbols.Add(constantGroup);
                }

                // Hide zero-length segments.
                this.Symbols.AddRange(
                    from segment in module.Segments
                    where segment.Length > 0
                    orderby segment.Class, segment.Name
                    select new SegmentItem(segment, module));

                this.Symbols.AddRange(
                    from alias in module.Aliases
                    select(ITreeNode) new SymbolAliasItem(alias));

#if false
                this.Symbols.AddRange(
                    from symbol in module.DefinedNames
                    where symbol.BaseSegment != null
                    orderby symbol.BaseSegment.Name, symbol.Offset, symbol.Name
                    select new SymbolItem(symbol));
#endif
            }
            public ModuleItem(ObjectModule module)
            {
                if (module == null)
                    throw new ArgumentNullException("module");

                this.Module = module;
                this.Symbols = new List<ITreeNode>();

                ConstantSegmentItem constantGroup = new ConstantSegmentItem(module);
                if (constantGroup.HasChildren)
                    this.Symbols.Add(constantGroup);

                // Hide zero-length segments.
                this.Symbols.AddRange(
                    from segment in module.Segments
                    where segment.Length > 0
                    orderby segment.Class, segment.Name
                    select new SegmentItem(segment, module));

                this.Symbols.AddRange(
                    from alias in module.Aliases
                    select (ITreeNode)new SymbolAliasItem(alias));

                #if false
                this.Symbols.AddRange(
                    from symbol in module.DefinedNames
                    where symbol.BaseSegment != null
                    orderby symbol.BaseSegment.Name, symbol.Offset, symbol.Name
                    select new SymbolItem(symbol));
                #endif
            }