public static float ModifyCommonalityOf(ThingDef thingDefFor, ThingDef stuff, float curCommonality)
        {
            var extension = stuff.GetCachedExtension();

            if (extension != null)
            {
                if (thingDefFor.IsApparel)
                {
                    if (extension.apparelGenerationCommonalityOffset.HasValue)
                    {
                        curCommonality += extension.apparelGenerationCommonalityOffset.Value;
                    }
                    if (extension.apparelGenerationCommonalityFactor.HasValue)
                    {
                        curCommonality *= extension.apparelGenerationCommonalityFactor.Value;
                    }
                }
                if (thingDefFor.IsWeapon)
                {
                    if (extension.weaponGenerationCommonalityOffset.HasValue)
                    {
                        curCommonality += extension.weaponGenerationCommonalityOffset.Value;
                    }
                    if (extension.weaponGenerationCommonalityFactor.HasValue)
                    {
                        curCommonality *= extension.weaponGenerationCommonalityFactor.Value;
                    }
                }
                if (thingDefFor.building != null)
                {
                    if (extension.structureGenerationCommonalityOffset.HasValue)
                    {
                        curCommonality += extension.structureGenerationCommonalityOffset.Value;
                    }
                    if (extension.structureGenerationCommonalityFactor.HasValue)
                    {
                        curCommonality *= extension.structureGenerationCommonalityFactor.Value;
                    }
                }
            }
            return(curCommonality);
        }