function accumulator( input ) {
		var out;
		if ( arguments.length === 0 ) {
			return state;
		}
		out = programSummary( input );
		return update( state, engine, out );
	}
If provided a value, the accumulator function returns an updated summary. If not provided a value, the accumulator function returns the current summary.

@private
@param {(string|Buffer)} [input] - input program
@throws {TypeError} must provide either a string or Buffer
@returns {Object} summary

@example
var summary = accumulator();
// returns {...}

summary = accumulator( '"use strict";\n\nvar y = 5;\n' );
// returns {...}

summary = accumulator( '"use strict";\n\nmodule.exports = "beep";\n' );
// returns {...}

summary = accumulator();
// returns {...}