public ITuneableTrackAttributesBuilder DynamicAttribute <T>(string attributeName, Action <ITuneableTrackAttributeBuilder <T> > buildAttribute) where T : struct
        {
            var attributeBuilder = new TuneableTrackAttributeBuilder <T>();

            buildAttribute?.Invoke(attributeBuilder);

            this.attributes[attributeName] = attributeBuilder.GetValues(attributeName).ToList();

            return(this);
        }
        private ITuneableTrackAttributesBuilder Attribute <T, TResult>(string attributeName, Action <ITuneableTrackAttributeBuilder <T> > buildAttribute, Func <T, TResult> resultSelector)
            where T : struct
        {
            var attributeBuilder = new TuneableTrackAttributeBuilder <T, TResult>(resultSelector);

            buildAttribute?.Invoke(attributeBuilder);

            this.attributes[attributeName] = attributeBuilder.GetValues(attributeName).ToList();

            return(this);
        }