function createVisitors( visitors ) {
	var clbk;
	var type;
	var keys;
	var out;
	var i;

	keys = objectKeys( walk.base );
	out = {};
	for ( i = 0; i < keys.length; i++ ) {
		type = keys[ i ];
		clbk = visitors[ type ] || walk.base[ type ];
		out[ type ] = wrapVisitor( clbk );
	}
	return out;

	/**
	* Returns a visitor callback which tracks ancestor nodes.
	*
	* @private
	* @param {Function} clbk - callback function
	* @returns {Function} visitor callback
	*/
	function wrapVisitor( clbk ) {
		return visitor;

		/**
		* Callback invoked upon encountering an AST node.
		*
		* @private
		* @param {Node} node - AST node
		* @param {Object} state - state
		* @param {Function} c - callback
		*/
		function visitor( node, state, c ) {
			var FLG = ( node !== state.ancestors[ state.ancestors.length-1 ] );
			if ( FLG ) {
				state.ancestors.push( node );
			}
			clbk( node, state, c ); // eslint-disable-line node/callback-return
			if ( FLG ) {
				state.ancestors.pop();
			}
		}
	}
}
Returns an object containing visitor callbacks for recursively walking an abstract syntax tree (AST).

@private
@param {Object} visitors - visitor callbacks (overrides)
@returns {Object} object containing visitor callbacks