'Adds tokens to the L{Bucket} and its C{parentBucket}.
This will add as many of the C{amount} tokens as will fit into both
this L{Bucket} and its C{parentBucket}.
@param amount: The number of tokens to try to add.
@type amount: C{int}
@returns: The number of tokens that actually fit.
@returntype: C{int}'

def add(self, amount):

    self.drip()
    if (self.maxburst is None):
        allowable = amount
    else:
        allowable = min(amount, (self.maxburst - self.content))
    if (self.parentBucket is not None):
        allowable = self.parentBucket.add(allowable)
    self.content += allowable
    return allowable
