protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            BenefitTableBuilder.Build(modelBuilder);
            AllowanceTypeTableBuilder.Build(modelBuilder);
            CountryTableBuilder.Build(modelBuilder);
            OrganisationTableBuilder.Build(modelBuilder);
            ProvinceTableBuilder.Build(modelBuilder);
            PaymentFrequencyTableBuilder.Build(modelBuilder);

            AddressTableBuilder.Build(modelBuilder);

            RoleTableBuilder.Build(modelBuilder);

            AccountTableBuilder.Build(modelBuilder);

            CompanyTableBuilder.Build(modelBuilder);
            CompanyBankDetailTableBuilder.Build(modelBuilder);
            CompanyPayrollSettingTableBuilder.Build(modelBuilder);

            EmployeeTableBuilder.Build(modelBuilder);
            EmployeePayrollTableBuilder.Build(modelBuilder);
            EmployeeAllowanceTableBuilder.Build(modelBuilder);
            EmployeeBenefitTableBuilder.Build(modelBuilder);
            EmployeeMedicalAidTableBuilder.Build(modelBuilder);

            IncomeTaxTableBuilder.Build(modelBuilder);
            MedicalAidTaxCreditTableBuilder.Build(modelBuilder);
            PensionFundTableBuilder.Build(modelBuilder);
            TaxRebateTableBuilder.Build(modelBuilder);
            TaxThresholdTableBuilder.Build(modelBuilder);
            UifTableBuilder.Build(modelBuilder);
            AllowanceTableBuilder.Build(modelBuilder);
            LookupTableBuilder.Build(modelBuilder);
        }
            public LookupTableBuilder GetModuleLookupSegment(ImageModuleImport moduleImport)
            {
                LookupTableBuilder segment;

                if (!_lookupTableSegments.TryGetValue(moduleImport, out segment))
                {
                    segment = new LookupTableBuilder(_offsetConverter, _nameTableBuilder)
                    {
                        Is32Bit = Is32Bit
                    };

                    foreach (var symbolImport in moduleImport.SymbolImports)
                    {
                        segment.GetLookupSegment(symbolImport);
                    }
                    segment.GetLookupSegment(new ImageSymbolImport(0));

                    Segments.Add(segment);
                    _lookupTableSegments.Add(moduleImport, segment);
                }
                return(segment);
            }
            public LookupTableBuilder GetModuleLookupSegment(ImageModuleImport moduleImport)
            {
                LookupTableBuilder segment;
                if (!_lookupTableSegments.TryGetValue(moduleImport, out segment))
                {
                    segment = new LookupTableBuilder(_offsetConverter, _nameTableBuilder)
                    {
                        Is32Bit = Is32Bit
                    };

                    foreach (var symbolImport in moduleImport.SymbolImports)
                        segment.GetLookupSegment(symbolImport);
                    segment.GetLookupSegment(new ImageSymbolImport(0));

                    Segments.Add(segment);
                    _lookupTableSegments.Add(moduleImport, segment);
                }
                return segment;
            }