/// <summary>
 /// Buys, returns actually bought, subsidizations allowed, uses deposits if available
 /// </summary>
 public Storage buy(Consumer forWhom, Storage need, Country subsidizer)
 {
     if (forWhom.canAfford(need) || subsidizer == null)
     {
         return(buy(forWhom, need));
     }
     else
     {
         subsidizer.takeFactorySubsidies(forWhom, forWhom.GetLackingMoney(need));
         return(buy(forWhom, need));
     }
 }