public override Token Build(Token lastToken, ScriptEngine engine, Script script, ref SourceCode sourceCode)
        {
            // using (arg1, arg2, arg3) { }

            sourceCode += 5;

            if (!sourceCode.SeekToNext('('))
            {
                sourceCode.Throw("Expected (");
            }

            // Build up the arguments.
            Dictionary<string, List<Token>> items = new Dictionary<string, List<Token>>();

            while (sourceCode.CurrentCode != ')')
            {

                string name = sourceCode.NextWord();

                if (sourceCode.CurrentCode != '=')
                {
                    sourceCode.Throw(String.Format("Unexpected character, {0}.", sourceCode.CurrentCode));
                }

                // Otherwise...
                List<Token> code = engine.BuildTokens(ref sourceCode, ref script, new char[] {',', ')'});

                items.Add(name, code);

            }

            if (!sourceCode.SeekToNext('{'))
            {
                sourceCode.Throw(String.Format("Unexpected character, {0}", sourceCode.NextCode));
            }

            List<List<List<Token>>> codeBlock = engine.BuildLongTokens(ref sourceCode, ref script, new char[] {'}'});

            return new UsingToken(items, codeBlock);
        }