parseStatistics (stats, timings, transfers, options) {
        var summaryTable,
            style = { head: [] };

        if (cliUtils.noTTY(options.color)) {
            style.border = [];
        }

        // create the summary table
        summaryTable = new Table({
            chars: options.disableUnicode && cliUtils.cliTableTemplateFallback,
            style: style,
            head: [E, 'executed', '  failed'],
            colAligns: ['right', 'right', 'right'],
            colWidths: [25]
        });

        // add specific rows to show in summary
        stats && _.forEach([{
            source: 'iterations',
            label: 'iterations'
        }, {
            source: 'requests',
            label: 'requests'
        }, {
            source: 'testScripts',
            label: 'test-scripts'
        }, {
            source: 'prerequestScripts',
            label: 'prerequest-scripts'
        }, {
            source: 'assertions',
            label: 'assertions'
        }], function (row) {
            var metric = stats[row.source],
                label = row.label;

            // colour the label based on the failure or pending count of the metric
            label = metric.failed ? colors.red(label) : (metric.pending ? label : colors.green(label));

            // push the statistics
            summaryTable.push([
                label,
                metric.total,
                (metric.failed ? colors.red(metric.failed) : metric.failed)
                // @todo - add information of pending scripts
                // (metric.failed ? colors.red(metric.failed) : metric.failed) +
                //     (metric.pending ? format(' (%d pending)', metric.pending) : E)
            ]);
        });

        // add the total execution time to summary
        timings && summaryTable.push([{
            colSpan: 3,
            content: format('total run duration: %s', util.prettyms(timings.completed - timings.started)),
            hAlign: 'left' // since main style was set to right
        }]);

        // add row to show total data received
        transfers && summaryTable.push([{
            colSpan: 3,
            content: format('total data received: %s (approx)', util.filesize(transfers.responseTotal)),
            hAlign: 'left'
        }]);

        // add rows containing average time of different request phases
        timings && _.forEach({
            response: 'average response time:',
            dns: 'average DNS lookup time:',
            firstByte: 'average first byte time:'
        }, (value, key) => {
            timings[`${key}Average`] && summaryTable.push([{
                colSpan: 3,
                content: format(`${value} %s [min: %s, max: %s, s.d.: %s]`,
                    util.prettyms(timings[`${key}Average`]),
                    util.prettyms(timings[`${key}Min`]),
                    util.prettyms(timings[`${key}Max`]),
                    util.prettyms(timings[`${key}Sd`])),
                hAlign: 'left'
            }]);
        });

        return summaryTable;
    }
A CLI reporter method to parse collection run statistics into a CLI table.

@param {Object} stats - The cumulative collection run status object.
@param {Object} stats.iterations - A set of values for total, pending, and failed iterations.
@param {Number} stats.iterations.total - Total iterations in the current collection run.
@param {Number} stats.iterations.pending - Pending iterations in the current collection run.
@param {Number} stats.iterations.failed - Failed iterations in the current collection run.
@param {Object} stats.requests - A set of values for total, pending, and failed requests.
@param {Number} stats.requests.total - Total requests in the current collection run.
@param {Number} stats.requests.pending - Pending requests in the current collection run.
@param {Number} stats.requests.failed - Failed requests in the current collection run.
@param {Object} stats.testScripts - A set of values for total, pending, and failed testScripts.
@param {Number} stats.testScripts.total - Total testScripts in the current collection run.
@param {Number} stats.testScripts.pending - Pending testScripts in the current collection run.
@param {Number} stats.testScripts.failed - Failed testScripts in the current collection run.
@param {Object} stats.prerequestScripts - A set of values for total, pending, and failed prerequestScripts.
@param {Number} stats.prerequestScripts.total - Total prerequestScripts in the current collection run.
@param {Number} stats.prerequestScripts.pending - Pending prerequestScripts in the current collection run.
@param {Number} stats.prerequestScripts.failed - Failed prerequestScripts in the current collection run.
@param {Object} stats.assertions - A set of values for total, pending, and failed assertions.
@param {Number} stats.assertions.total - Total assertions in the current collection run.
@param {Number} stats.assertions.pending - Pending assertions in the current collection run.
@param {Number} stats.assertions.failed - Failed assertions in the current collection run.
@param {Object} timings - A set of values for the timings of the current collection run.
@param {Number} timings.completed - The end timestamp for the current collection run.
@param {Number} timings.started - The start timestamp for the current collection run
@param {String} timings.responseAverage - The average response time across all requests
@param {String} timings.responseMin - The minimum response time across all requests
@param {String} timings.responseMax - The maximum response time across all requests
@param {String} timings.responseSd - Standard deviation of response time across all requests
@param {String} timings.dnsAverage - The average DNS lookup time of the run
@param {String} timings.dnsMin - The minimum DNS lookup time of the run
@param {String} timings.dnsMax - The maximum DNS lookup time of the run
@param {String} timings.dnsSd - Standard deviation of DNS lookup time of the run
@param {String} timings.firstByteAverage - The average first byte time of the run
@param {String} timings.firstByteMin - The minimum first byte time of the run
@param {String} timings.firstByteMax - The maximum first byte time of the run
@param {String} timings.firstByteSd - Standard deviation of first byte time of the run
@param {Object} transfers - A set of details on the network usage for the current collection run.
@param {String} transfers.responseTotal - The net extent of the data transfer achieved during the collection run.
@param {Object} options - The set of generic collection run options.
@returns {Table} - The constructed collection run statistics table.