public function apply($testable, array $config = array()) {
		$message = 'Tabs can only appear at the beginning of the line';
		$lines = $testable->lines();
		$tokens = $testable->tokens();
		$currLine = 1;
		$allowTabs = true;
		foreach ($tokens as $token) {
			$content = str_replace("\r\n", "\n", $token['content']);

			$isNewLine = ($token['line'] > $currLine || (
				$token['id'] === T_WHITESPACE && preg_match('/\n/', $content)
			));
			if ($isNewLine) {
				$currLine = $token['line'];
				$allowTabs = true;
			}

			if ($token['id'] !== T_WHITESPACE) {
				$allowTabs = false;
				continue;
			}

			if ($allowTabs) {
				$isInvalidTab = !preg_match('/^(\n?\t?)+ *$/', $content);
			} else {
				$isInvalidTab = preg_match('/\t/', $content);
			}
			if ($isInvalidTab) {
				$this->addViolation(array(
					'message' => $message,
					'line' => $token['line'],
				));
			}
		}
	}