/**
* A callback that takes no parameters, and returns nothing.
* See the user for the description of what it should do.
* @callback emptyCallback
*/
/**
* A callback to perform a single step in a simulation.
* @callback simulationCallback
* @param {number} elapsedMillis The number of milliseconds to advance the simulation by
*/
/**
* A callback to perform drawing operations on a canvas
* @callback drawCallback
* @param {external:CanvasRenderingContext2D} context The context to use for drawing
*/
/**
* A function that compares two elements and returns a number that determines how they should be sorted.
* @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort Array.prototype.sort() at Mozilla Developer Network}
* @callback compareFunction
* @param {object} a
* @param {object} b
* @returns {number}
* If compareFunction(a, b) returns less than 0, then a comes first.
* If compareFunction(a, b) returns 0, then don't change the order of a relative to b.
* If compareFunction(a, b) returns greater than 0, then b comes first.
*/
/**
* A function that tests if a given coordinate can be travelled across.
* @callback isWalkable
* @param {number} x The position along the x-axis on a grid
* @param {number} y The position along the y-axis on a grid
* @returns {boolean}
*/