/// <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)); } }