buildGroup = function(group, options, prev) {
                    if (!group) {
                        return makeSpan();
                    }

                    if (groupTypes[group.type]) {
                        // Call the groupTypes function
                        var groupNode = groupTypes[group.type](group, options, prev);
                        var multiplier;

                        // If the style changed between the parent and the current group,
                        // account for the size difference
                        if (options.style !== options.parentStyle) {
                            multiplier = options.style.sizeMultiplier /
                                options.parentStyle.sizeMultiplier;

                            groupNode.height *= multiplier;
                            groupNode.depth *= multiplier;
                        }

                        // If the size changed between the parent and the current group, account
                        // for that size difference.
                        if (options.size !== options.parentSize) {
                            multiplier = buildCommon.sizingMultiplier[options.size] /
                                buildCommon.sizingMultiplier[options.parentSize];

                            groupNode.height *= multiplier;
                            groupNode.depth *= multiplier;
                        }

                        return groupNode;
                    } else {
                        throw new ParseError(
                            "Got group of unknown type: '" + group.type + "'");
                    }
                }
Makes a symbolNode after translation via the list of symbols in symbols.js.
Correctly pulls out metrics for the character, and optionally takes a list of
classes to be attached to the node.