public override Token Next()
			{
				if (!first)
					return null;
				Token t = new Token(System.Text.Encoding.UTF8.GetString(payload), 0, 0);
				t.SetPayload(new Payload(payload));
				return t;
			}
			public override Token Next(Token token)
			{
				token = input.Next(token);
				if (token != null)
				{
					if (offset + length <= data.Length)
					{
						Payload p = null;
						if (p == null)
						{
							p = new Payload();
							token.SetPayload(p);
						}
						p.SetData(data, offset, length);
						offset += length;
					}
					else
					{
						token.SetPayload(null);
					}
				}
				
				return token;
			}