special_fields: "a dict of data specific to collector type
            that should be added to the data returned by the parser.
            This will also be and operated on by idMapping, mappings and
            plugins"

        This method loops through the data provided to the instance.
        For each item it will return a dict of the format:
        {
            "_timestamp": "the item start_date",
            "dataType": "self.data_type for the instance",
            ...
            "any additional fields": "from self.additionalFields",
            "any special_fields": "from special fields argument",
            "any item dimensions": "from item.dimensions",
            ...
            mappings changing keys in this dict from self.mappings
               are then applied on the above
            ...
            "_humanId": "derived from either the values corresponding to
               idMapping concatenated or the data_type, item.start_date,
               timeSpan and item.dimensions values if any concatenated"
            "_id": "derived from either the values corresponding to
               idMapping concatenated or the data_type, item.start_date,
               timeSpan and item.dimensions values if any concatenated and
               then base64 encoded"
        }

def get_data(self, special_fields=None):
        """
        special_fields: "a dict of data specific to collector type
            that should be added to the data returned by the parser.
            This will also be and operated on by idMapping, mappings and
            plugins"

        This method loops through the data provided to the instance.
        For each item it will return a dict of the format:
        {
            "_timestamp": "the item start_date",
            "dataType": "self.data_type for the instance",
            ...
            "any additional fields": "from self.additionalFields",
            "any special_fields": "from special fields argument",
            "any item dimensions": "from item.dimensions",
            ...
            mappings changing keys in this dict from self.mappings
               are then applied on the above
            ...
            "_humanId": "derived from either the values corresponding to
               idMapping concatenated or the data_type, item.start_date,
               timeSpan and item.dimensions values if any concatenated"
            "_id": "derived from either the values corresponding to
               idMapping concatenated or the data_type, item.start_date,
               timeSpan and item.dimensions values if any concatenated and
               then base64 encoded"
        }
        """
        docs = build_document_set(self.data, self.data_type, self.mappings,
                                  special_fields,
                                  self.idMapping,
                                  additionalFields=self.additionalFields)

        if self.plugins:
            docs = run_plugins(self.plugins, list(docs))

        return docs