public PaletteOffsetCollections()
        {
            ExtraPalettes = new ExtraPalettes();

            var objectBuilder = new PaletteIndexCollectionBuilder(0xDE6C8, 7);
            var spriteBuilder = new PaletteIndexCollectionBuilder(0xDD446, 7);

            LightWorld = new LightWorld(
                objectBuilder,
                spriteBuilder,
                new PaletteIndexCollectionBuilder(0xDD218, 15));
            DarkWorld = new DarkWorld(
                objectBuilder,
                spriteBuilder,
                new PaletteIndexCollectionBuilder(0xDD290, 15));
            TriforceRoom = new TriforceRoom(objectBuilder);

            LightWorldMap = new OverworldMap(
                new PaletteIndexCollectionBuilder(0x55B39, 16));
            DarkWorldMap = new OverworldMap(
                new PaletteIndexCollectionBuilder(0x55C39, 16));

            LightWorldAndMap = new LightWorldAndMap(LightWorld, LightWorldMap);
            DarkWorldAndMap  = new DarkWorldAndMap(DarkWorld, DarkWorldMap);
        }
        public LightWorldAndMap(LightWorld lightWorld, OverworldMap lightWorldMap)
        {
            if (lightWorld is null)
            {
                throw new ArgumentNullException(nameof(lightWorld));
            }

            if (lightWorldMap is null)
            {
                throw new ArgumentNullException(nameof(lightWorldMap));
            }

            GrassShrubsAndTrees = AddCollectionsAsConcatenation(
                lightWorld.GrassShrubsAndTrees,
                lightWorldMap.Grass);

            FlowersAndRocks = AddCollectionsAsConcatenation(
                lightWorld.FlowersAndRocks,
                lightWorldMap.Flowers);

            Water = AddCollectionsAsConcatenation(
                lightWorld.Water,
                lightWorldMap.Water);

            HillsAndDirt = AddCollectionsAsConcatenation(
                lightWorld.HillsAndDirt,
                lightWorldMap.HillsAndDirt,
                lightWorldMap.TreeWood);

            Clouds = AddCollectionsAsConcatenation(
                lightWorld.DeathMountain.Clouds,
                lightWorldMap.Clouds);

            HyruleCastleWalls = AddCollectionsAsConcatenation(
                lightWorld.HyruleCastle.Walls,
                lightWorldMap.HyruleCastle);

            Sanctuary = AddCollectionsAsConcatenation(
                lightWorld.Sanctuary.Wall,
                lightWorldMap.Sanctuary);

            Houses = AddCollectionsAsConcatenation(
                lightWorld.Houses,
                lightWorldMap.Houses);

            DeathMountain = AddCollectionsAsConcatenation(
                lightWorld.DeathMountain.WallsAndAbyss,
                lightWorldMap.DeathMountain);

            TowerOfHera = AddCollectionsAsConcatenation(
                lightWorld.DeathMountain.HeraBricks,
                lightWorldMap.TowerOfHera);

            AllIndexCollections = new ReadOnlyCollection <IndexCollection>(
                new IndexCollection[]
            {
                GrassShrubsAndTrees,
                FlowersAndRocks,
                Water,
                HillsAndDirt,
                Clouds,
                HyruleCastleWalls,
                Sanctuary,
                Houses,
                DeathMountain,
                TowerOfHera,
            });
        }