/// <summary> /// Remove a given number of tokens from the bucket /// </summary> /// <param name="amount">Number of tokens to remove from the bucket</param> /// <param name="dripSucceeded">True if tokens were added to the bucket /// during this call, otherwise false</param> /// <returns>True if the requested number of tokens were removed from /// the bucket, otherwise false</returns> public bool RemoveTokens(int amount, out bool dripSucceeded) { if (maxBurst == 0) { dripSucceeded = true; return(true); } dripSucceeded = Drip(); if (content - amount >= 0) { if (parent != null && !parent.RemoveTokens(amount)) { return(false); } content -= amount; return(true); } else { return(false); } }