makeImpl = function(test, maskPattern) {

                        _moduleCount = _typeNumber * 4 + 17;
                        _modules = function(moduleCount) {
                            var modules = new Array(moduleCount);
                            for (var row = 0; row < moduleCount; row += 1) {
                                modules[row] = new Array(moduleCount);
                                for (var col = 0; col < moduleCount; col += 1) {
                                    modules[row][col] = null;
                                }
                            }
                            return modules;
                        }(_moduleCount);

                        setupPositionProbePattern(0, 0);
                        setupPositionProbePattern(_moduleCount - 7, 0);
                        setupPositionProbePattern(0, _moduleCount - 7);
                        setupPositionAdjustPattern();
                        setupTimingPattern();
                        setupTypeInfo(test, maskPattern);

                        if (_typeNumber >= 7) {
                            setupTypeNumber(test);
                        }

                        if (_dataCache == null) {
                            _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);
                        }

                        mapData(_dataCache, maskPattern);
                    }
qrcode
@param typeNumber 1 to 40
@param errorCorrectionLevel 'L','M','Q','H'