public List <IngestElement> ExtractElementsFromCollectables(Queue <CollectableValue> values)
        {
            List <IngestElement> elements =
                values
                .OfType <IngestValue>()
                .Select(value =>
            {
                string elementType    = (value.ElementType == null) ? _defaultElementType : value.ElementType;
                IngestElement element = new IngestElement(value.HostName, value.HostName, elementType, _location);

                if (value is MetricValue)
                {
                    AddMetrics((MetricValue)value, element);
                }
                else if (value is AttributeValue)
                {
                    element.addAttribute(new IngestAttribute(((AttributeValue)value).Name, ((AttributeValue)value).Value));
                }
                else if (value is RelationValue)
                {
                    element.addRelation(new IngestRelation(((RelationValue)value).Fqn));
                }
                else if (value is TagValue)
                {
                    element.addTag(new IngestTag(((TagValue)value).Name, ((TagValue)value).Value));
                }
                return(element);
            })
                .OrderBy(ingestElement => ingestElement.id).ToList();

            return(elements);
        }