public TResult Build(AssetManagerLoader loader)
        {
            GameObject go = UnityEngine.Object.Instantiate(_go);
            // existing Decos are not evaluated. Assumed to be configured correctly
            TResult vehicle = go.GetComponent <TResult>();

            if (vehicle == null)
            {
                vehicle = go.AddComponent <TResult>();
                if (!ContainsTag("GUID"))
                {
                    throw new Exception("Guid is never set");
                }
            }

            Apply(new BaseObjectContainer <TResult>(loader, vehicle, go));
            foreach (Renderer componentsInChild in go.GetComponentsInChildren <Renderer>())
            {
                Parkitility.ReplaceWithParkitectMaterial(componentsInChild);
            }

            List <Transform> transforms = new List <Transform>();

            Utility.recursiveFindTransformsStartingWith("WheelsFront", go.transform, transforms);
            vehicle.frontAxisArray = transforms.ToArray();
            transforms.Clear();
            Utility.recursiveFindTransformsStartingWith("WheelsBack", go.transform, transforms);
            vehicle.backAxisArray = transforms.ToArray();


            loader.RegisterObject(vehicle);

            return(vehicle);
        }
        public TResult Build(AssetManagerLoader loader)
        {
            GameObject go = UnityEngine.Object.Instantiate(_go);
            // existing Decos are not evaluated. Assumed to be configured correctly
            TResult deco = go.GetComponent <TResult>();

            if (deco == null)
            {
                deco = go.AddComponent <TResult>();
                if (!ContainsTag("GUID"))
                {
                    throw new Exception("Guid is never set");
                }
            }

            Apply(new BaseObjectContainer <TResult>(loader, deco, go));
            foreach (Renderer componentsInChild in go.GetComponentsInChildren <Renderer>())
            {
                Parkitility.ReplaceWithParkitectMaterial(componentsInChild);
            }

            // register deco
            loader.RegisterObject(deco);
            return(deco);
        }