And that explanation makes sense but `bucket` is a local object.  Therefore you're creating a local object `bucket` and adding an object into it but you're not passing `bucket` to anything and I believe it will get deleted once you leave the scope:
```
    if ([metrics isKindOfClass:LibratoMetric.class])
    {
        LibratoMetric *metric = metrics;
        if (metric.measureTime)
        {
            [self checkMeasurementTime:metric];
        }
        
        LibratoMetricCollection *bucket = [self collectionNamed:metric.type];
        [bucket addObject:metrics];
        return self;
    }
```
Unless of course `bucket` was created with the intention of being used in the future.