findElements(...args) /* ... */{
		let q = null;

		if (args.length == 1)
			q = args[0];
		else if (args.length == 2)
			q = '[%s="%s"]'.format(args[0], args[1]);
		else
			L.error('InternalError', 'Expecting one or two arguments to findElements()');

		return this.root.querySelectorAll(q);
	}
Return all DOM nodes within this Map which match the given search
parameters. This function is essentially a convenience wrapper around
`querySelectorAll()`.

This function is sensitive to the amount of arguments passed to it;
if only one argument is specified, it is used as selector-expression
as-is. When two arguments are passed, the first argument is treated
as attribute name, the second one as attribute value to match.

As an example, `map.findElements('input')` would find all `<input>`
nodes while `map.findElements('type', 'text')` would find any DOM node
with a `type="text"` attribute.

@param {string} selector_or_attrname
If invoked with only one parameter, this argument is a
`querySelectorAll()` compatible selector expression. If invoked with
two parameters, this argument is the attribute name to filter for.

@param {string} [attrvalue]
In case the function is invoked with two parameters, this argument
specifies the attribute value to match.

@throws {InternalError}
Throws an `InternalError` if more than two function parameters are
passed.

@returns {NodeList}
Returns a (possibly empty) DOM `NodeList` containing the found DOM nodes.