public function after($expression = null, $test = false, $limit = LIMIT_AFTER) {
			if (isset($this->after) && $limit == LIMIT_AFTER) {
				$after = $this->after;
			}

			else {
				$after = substr($this->data, $this->end, $this->end + $limit);
				$this->after = $after;
			}

			if ($test === false) {
				if ($expression === null) {
					return new Token(substr($this->data, $this->end), $this->end);
				}

				preg_match($expression, $after, $match, PREG_OFFSET_CAPTURE);

				if (!isset($match[0][0]) || !isset($match[0][1])) return null;

				return new Token($match[0][0], $match[0][1] + $this->end);
			}

			else {
				if ($expression === null) {
					return $this->end < $this->size;
				}

				return (boolean)preg_match($expression, $after);
			}
		}