diff --git a/lexer_test.go b/lexer_test.go
index d6ddc07..8d421f4 100644
--- a/lexer_test.go
+++ b/lexer_test.go
@@ -37,260 +37,260 @@
 
 func TestValidKeyGroup(t *testing.T) {
 	testFlow(t, "[hello world]", []token{
-		token{Position{1, 1}, tokenLeftBracket, "["},
-		token{Position{1, 2}, tokenKeyGroup, "hello world"},
-		token{Position{1, 13}, tokenRightBracket, "]"},
-		token{Position{1, 14}, tokenEOF, ""},
+		{Position{1, 1}, tokenLeftBracket, "["},
+		{Position{1, 2}, tokenKeyGroup, "hello world"},
+		{Position{1, 13}, tokenRightBracket, "]"},
+		{Position{1, 14}, tokenEOF, ""},
 	})
 }
 
 func TestNestedQuotedUnicodeKeyGroup(t *testing.T) {
 	testFlow(t, `[ j . "ʞ" . l ]`, []token{
-		token{Position{1, 1}, tokenLeftBracket, "["},
-		token{Position{1, 2}, tokenKeyGroup, ` j . "ʞ" . l `},
-		token{Position{1, 15}, tokenRightBracket, "]"},
-		token{Position{1, 16}, tokenEOF, ""},
+		{Position{1, 1}, tokenLeftBracket, "["},
+		{Position{1, 2}, tokenKeyGroup, ` j . "ʞ" . l `},
+		{Position{1, 15}, tokenRightBracket, "]"},
+		{Position{1, 16}, tokenEOF, ""},
 	})
 }
 
 func TestUnclosedKeyGroup(t *testing.T) {
 	testFlow(t, "[hello world", []token{
-		token{Position{1, 1}, tokenLeftBracket, "["},
-		token{Position{1, 2}, tokenError, "unclosed key group"},
+		{Position{1, 1}, tokenLeftBracket, "["},
+		{Position{1, 2}, tokenError, "unclosed key group"},
 	})
 }
 
 func TestComment(t *testing.T) {
 	testFlow(t, "# blahblah", []token{
-		token{Position{1, 11}, tokenEOF, ""},
+		{Position{1, 11}, tokenEOF, ""},
 	})
 }
 
 func TestKeyGroupComment(t *testing.T) {
 	testFlow(t, "[hello world] # blahblah", []token{
-		token{Position{1, 1}, tokenLeftBracket, "["},
-		token{Position{1, 2}, tokenKeyGroup, "hello world"},
-		token{Position{1, 13}, tokenRightBracket, "]"},
-		token{Position{1, 25}, tokenEOF, ""},
+		{Position{1, 1}, tokenLeftBracket, "["},
+		{Position{1, 2}, tokenKeyGroup, "hello world"},
+		{Position{1, 13}, tokenRightBracket, "]"},
+		{Position{1, 25}, tokenEOF, ""},
 	})
 }
 
 func TestMultipleKeyGroupsComment(t *testing.T) {
 	testFlow(t, "[hello world] # blahblah\n[test]", []token{
-		token{Position{1, 1}, tokenLeftBracket, "["},
-		token{Position{1, 2}, tokenKeyGroup, "hello world"},
-		token{Position{1, 13}, tokenRightBracket, "]"},
-		token{Position{2, 1}, tokenLeftBracket, "["},
-		token{Position{2, 2}, tokenKeyGroup, "test"},
-		token{Position{2, 6}, tokenRightBracket, "]"},
-		token{Position{2, 7}, tokenEOF, ""},
+		{Position{1, 1}, tokenLeftBracket, "["},
+		{Position{1, 2}, tokenKeyGroup, "hello world"},
+		{Position{1, 13}, tokenRightBracket, "]"},
+		{Position{2, 1}, tokenLeftBracket, "["},
+		{Position{2, 2}, tokenKeyGroup, "test"},
+		{Position{2, 6}, tokenRightBracket, "]"},
+		{Position{2, 7}, tokenEOF, ""},
 	})
 }
 
 func TestSimpleWindowsCRLF(t *testing.T) {
 	testFlow(t, "a=4\r\nb=2", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 2}, tokenEqual, "="},
-		token{Position{1, 3}, tokenInteger, "4"},
-		token{Position{2, 1}, tokenKey, "b"},
-		token{Position{2, 2}, tokenEqual, "="},
-		token{Position{2, 3}, tokenInteger, "2"},
-		token{Position{2, 4}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 2}, tokenEqual, "="},
+		{Position{1, 3}, tokenInteger, "4"},
+		{Position{2, 1}, tokenKey, "b"},
+		{Position{2, 2}, tokenEqual, "="},
+		{Position{2, 3}, tokenInteger, "2"},
+		{Position{2, 4}, tokenEOF, ""},
 	})
 }
 
 func TestBasicKey(t *testing.T) {
 	testFlow(t, "hello", []token{
-		token{Position{1, 1}, tokenKey, "hello"},
-		token{Position{1, 6}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "hello"},
+		{Position{1, 6}, tokenEOF, ""},
 	})
 }
 
 func TestBasicKeyWithUnderscore(t *testing.T) {
 	testFlow(t, "hello_hello", []token{
-		token{Position{1, 1}, tokenKey, "hello_hello"},
-		token{Position{1, 12}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "hello_hello"},
+		{Position{1, 12}, tokenEOF, ""},
 	})
 }
 
 func TestBasicKeyWithDash(t *testing.T) {
 	testFlow(t, "hello-world", []token{
-		token{Position{1, 1}, tokenKey, "hello-world"},
-		token{Position{1, 12}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "hello-world"},
+		{Position{1, 12}, tokenEOF, ""},
 	})
 }
 
 func TestBasicKeyWithUppercaseMix(t *testing.T) {
 	testFlow(t, "helloHELLOHello", []token{
-		token{Position{1, 1}, tokenKey, "helloHELLOHello"},
-		token{Position{1, 16}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "helloHELLOHello"},
+		{Position{1, 16}, tokenEOF, ""},
 	})
 }
 
 func TestBasicKeyWithInternationalCharacters(t *testing.T) {
 	testFlow(t, "héllÖ", []token{
-		token{Position{1, 1}, tokenKey, "héllÖ"},
-		token{Position{1, 6}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "héllÖ"},
+		{Position{1, 6}, tokenEOF, ""},
 	})
 }
 
 func TestBasicKeyAndEqual(t *testing.T) {
 	testFlow(t, "hello =", []token{
-		token{Position{1, 1}, tokenKey, "hello"},
-		token{Position{1, 7}, tokenEqual, "="},
-		token{Position{1, 8}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "hello"},
+		{Position{1, 7}, tokenEqual, "="},
+		{Position{1, 8}, tokenEOF, ""},
 	})
 }
 
 func TestKeyWithSharpAndEqual(t *testing.T) {
 	testFlow(t, "key#name = 5", []token{
-		token{Position{1, 1}, tokenError, "keys cannot contain # character"},
+		{Position{1, 1}, tokenError, "keys cannot contain # character"},
 	})
 }
 
 func TestKeyWithSymbolsAndEqual(t *testing.T) {
 	testFlow(t, "~!@$^&*()_+-`1234567890[]\\|/?><.,;:' = 5", []token{
-		token{Position{1, 1}, tokenError, "keys cannot contain ~ character"},
+		{Position{1, 1}, tokenError, "keys cannot contain ~ character"},
 	})
 }
 
 func TestKeyEqualStringEscape(t *testing.T) {
 	testFlow(t, `foo = "hello\""`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, "hello\""},
-		token{Position{1, 16}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, "hello\""},
+		{Position{1, 16}, tokenEOF, ""},
 	})
 }
 
 func TestKeyEqualStringUnfinished(t *testing.T) {
 	testFlow(t, `foo = "bar`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenError, "unclosed string"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenError, "unclosed string"},
 	})
 }
 
 func TestKeyEqualString(t *testing.T) {
 	testFlow(t, `foo = "bar"`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, "bar"},
-		token{Position{1, 12}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, "bar"},
+		{Position{1, 12}, tokenEOF, ""},
 	})
 }
 
 func TestKeyEqualTrue(t *testing.T) {
 	testFlow(t, "foo = true", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenTrue, "true"},
-		token{Position{1, 11}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenTrue, "true"},
+		{Position{1, 11}, tokenEOF, ""},
 	})
 }
 
 func TestKeyEqualFalse(t *testing.T) {
 	testFlow(t, "foo = false", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenFalse, "false"},
-		token{Position{1, 12}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenFalse, "false"},
+		{Position{1, 12}, tokenEOF, ""},
 	})
 }
 
 func TestArrayNestedString(t *testing.T) {
 	testFlow(t, `a = [ ["hello", "world"] ]`, []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenLeftBracket, "["},
-		token{Position{1, 7}, tokenLeftBracket, "["},
-		token{Position{1, 9}, tokenString, "hello"},
-		token{Position{1, 15}, tokenComma, ","},
-		token{Position{1, 18}, tokenString, "world"},
-		token{Position{1, 24}, tokenRightBracket, "]"},
-		token{Position{1, 26}, tokenRightBracket, "]"},
-		token{Position{1, 27}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenLeftBracket, "["},
+		{Position{1, 7}, tokenLeftBracket, "["},
+		{Position{1, 9}, tokenString, "hello"},
+		{Position{1, 15}, tokenComma, ","},
+		{Position{1, 18}, tokenString, "world"},
+		{Position{1, 24}, tokenRightBracket, "]"},
+		{Position{1, 26}, tokenRightBracket, "]"},
+		{Position{1, 27}, tokenEOF, ""},
 	})
 }
 
 func TestArrayNestedInts(t *testing.T) {
 	testFlow(t, "a = [ [42, 21], [10] ]", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenLeftBracket, "["},
-		token{Position{1, 7}, tokenLeftBracket, "["},
-		token{Position{1, 8}, tokenInteger, "42"},
-		token{Position{1, 10}, tokenComma, ","},
-		token{Position{1, 12}, tokenInteger, "21"},
-		token{Position{1, 14}, tokenRightBracket, "]"},
-		token{Position{1, 15}, tokenComma, ","},
-		token{Position{1, 17}, tokenLeftBracket, "["},
-		token{Position{1, 18}, tokenInteger, "10"},
-		token{Position{1, 20}, tokenRightBracket, "]"},
-		token{Position{1, 22}, tokenRightBracket, "]"},
-		token{Position{1, 23}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenLeftBracket, "["},
+		{Position{1, 7}, tokenLeftBracket, "["},
+		{Position{1, 8}, tokenInteger, "42"},
+		{Position{1, 10}, tokenComma, ","},
+		{Position{1, 12}, tokenInteger, "21"},
+		{Position{1, 14}, tokenRightBracket, "]"},
+		{Position{1, 15}, tokenComma, ","},
+		{Position{1, 17}, tokenLeftBracket, "["},
+		{Position{1, 18}, tokenInteger, "10"},
+		{Position{1, 20}, tokenRightBracket, "]"},
+		{Position{1, 22}, tokenRightBracket, "]"},
+		{Position{1, 23}, tokenEOF, ""},
 	})
 }
 
 func TestArrayInts(t *testing.T) {
 	testFlow(t, "a = [ 42, 21, 10, ]", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenLeftBracket, "["},
-		token{Position{1, 7}, tokenInteger, "42"},
-		token{Position{1, 9}, tokenComma, ","},
-		token{Position{1, 11}, tokenInteger, "21"},
-		token{Position{1, 13}, tokenComma, ","},
-		token{Position{1, 15}, tokenInteger, "10"},
-		token{Position{1, 17}, tokenComma, ","},
-		token{Position{1, 19}, tokenRightBracket, "]"},
-		token{Position{1, 20}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenLeftBracket, "["},
+		{Position{1, 7}, tokenInteger, "42"},
+		{Position{1, 9}, tokenComma, ","},
+		{Position{1, 11}, tokenInteger, "21"},
+		{Position{1, 13}, tokenComma, ","},
+		{Position{1, 15}, tokenInteger, "10"},
+		{Position{1, 17}, tokenComma, ","},
+		{Position{1, 19}, tokenRightBracket, "]"},
+		{Position{1, 20}, tokenEOF, ""},
 	})
 }
 
 func TestMultilineArrayComments(t *testing.T) {
 	testFlow(t, "a = [1, # wow\n2, # such items\n3, # so array\n]", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenLeftBracket, "["},
-		token{Position{1, 6}, tokenInteger, "1"},
-		token{Position{1, 7}, tokenComma, ","},
-		token{Position{2, 1}, tokenInteger, "2"},
-		token{Position{2, 2}, tokenComma, ","},
-		token{Position{3, 1}, tokenInteger, "3"},
-		token{Position{3, 2}, tokenComma, ","},
-		token{Position{4, 1}, tokenRightBracket, "]"},
-		token{Position{4, 2}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenLeftBracket, "["},
+		{Position{1, 6}, tokenInteger, "1"},
+		{Position{1, 7}, tokenComma, ","},
+		{Position{2, 1}, tokenInteger, "2"},
+		{Position{2, 2}, tokenComma, ","},
+		{Position{3, 1}, tokenInteger, "3"},
+		{Position{3, 2}, tokenComma, ","},
+		{Position{4, 1}, tokenRightBracket, "]"},
+		{Position{4, 2}, tokenEOF, ""},
 	})
 }
 
 func TestKeyEqualArrayBools(t *testing.T) {
 	testFlow(t, "foo = [true, false, true]", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenLeftBracket, "["},
-		token{Position{1, 8}, tokenTrue, "true"},
-		token{Position{1, 12}, tokenComma, ","},
-		token{Position{1, 14}, tokenFalse, "false"},
-		token{Position{1, 19}, tokenComma, ","},
-		token{Position{1, 21}, tokenTrue, "true"},
-		token{Position{1, 25}, tokenRightBracket, "]"},
-		token{Position{1, 26}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenLeftBracket, "["},
+		{Position{1, 8}, tokenTrue, "true"},
+		{Position{1, 12}, tokenComma, ","},
+		{Position{1, 14}, tokenFalse, "false"},
+		{Position{1, 19}, tokenComma, ","},
+		{Position{1, 21}, tokenTrue, "true"},
+		{Position{1, 25}, tokenRightBracket, "]"},
+		{Position{1, 26}, tokenEOF, ""},
 	})
 }
 
 func TestKeyEqualArrayBoolsWithComments(t *testing.T) {
 	testFlow(t, "foo = [true, false, true] # YEAH", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenLeftBracket, "["},
-		token{Position{1, 8}, tokenTrue, "true"},
-		token{Position{1, 12}, tokenComma, ","},
-		token{Position{1, 14}, tokenFalse, "false"},
-		token{Position{1, 19}, tokenComma, ","},
-		token{Position{1, 21}, tokenTrue, "true"},
-		token{Position{1, 25}, tokenRightBracket, "]"},
-		token{Position{1, 33}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenLeftBracket, "["},
+		{Position{1, 8}, tokenTrue, "true"},
+		{Position{1, 12}, tokenComma, ","},
+		{Position{1, 14}, tokenFalse, "false"},
+		{Position{1, 19}, tokenComma, ","},
+		{Position{1, 21}, tokenTrue, "true"},
+		{Position{1, 25}, tokenRightBracket, "]"},
+		{Position{1, 33}, tokenEOF, ""},
 	})
 }
 
@@ -308,401 +308,401 @@
 
 func TestKeyEqualDate(t *testing.T) {
 	testFlow(t, "foo = 1979-05-27T07:32:00Z", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenDate, "1979-05-27T07:32:00Z"},
-		token{Position{1, 27}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenDate, "1979-05-27T07:32:00Z"},
+		{Position{1, 27}, tokenEOF, ""},
 	})
 	testFlow(t, "foo = 1979-05-27T00:32:00-07:00", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenDate, "1979-05-27T00:32:00-07:00"},
-		token{Position{1, 32}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenDate, "1979-05-27T00:32:00-07:00"},
+		{Position{1, 32}, tokenEOF, ""},
 	})
 	testFlow(t, "foo = 1979-05-27T00:32:00.999999-07:00", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenDate, "1979-05-27T00:32:00.999999-07:00"},
-		token{Position{1, 39}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenDate, "1979-05-27T00:32:00.999999-07:00"},
+		{Position{1, 39}, tokenEOF, ""},
 	})
 }
 
 func TestFloatEndingWithDot(t *testing.T) {
 	testFlow(t, "foo = 42.", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenError, "float cannot end with a dot"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenError, "float cannot end with a dot"},
 	})
 }
 
 func TestFloatWithTwoDots(t *testing.T) {
 	testFlow(t, "foo = 4.2.", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenError, "cannot have two dots in one float"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenError, "cannot have two dots in one float"},
 	})
 }
 
 func TestFloatWithExponent1(t *testing.T) {
 	testFlow(t, "a = 5e+22", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenFloat, "5e+22"},
-		token{Position{1, 10}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenFloat, "5e+22"},
+		{Position{1, 10}, tokenEOF, ""},
 	})
 }
 
 func TestFloatWithExponent2(t *testing.T) {
 	testFlow(t, "a = 5E+22", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenFloat, "5E+22"},
-		token{Position{1, 10}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenFloat, "5E+22"},
+		{Position{1, 10}, tokenEOF, ""},
 	})
 }
 
 func TestFloatWithExponent3(t *testing.T) {
 	testFlow(t, "a = -5e+22", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenFloat, "-5e+22"},
-		token{Position{1, 11}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenFloat, "-5e+22"},
+		{Position{1, 11}, tokenEOF, ""},
 	})
 }
 
 func TestFloatWithExponent4(t *testing.T) {
 	testFlow(t, "a = -5e-22", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenFloat, "-5e-22"},
-		token{Position{1, 11}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenFloat, "-5e-22"},
+		{Position{1, 11}, tokenEOF, ""},
 	})
 }
 
 func TestFloatWithExponent5(t *testing.T) {
 	testFlow(t, "a = 6.626e-34", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenFloat, "6.626e-34"},
-		token{Position{1, 14}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenFloat, "6.626e-34"},
+		{Position{1, 14}, tokenEOF, ""},
 	})
 }
 
 func TestInvalidEsquapeSequence(t *testing.T) {
 	testFlow(t, `foo = "\x"`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenError, "invalid escape sequence: \\x"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenError, "invalid escape sequence: \\x"},
 	})
 }
 
 func TestNestedArrays(t *testing.T) {
 	testFlow(t, "foo = [[[]]]", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenLeftBracket, "["},
-		token{Position{1, 8}, tokenLeftBracket, "["},
-		token{Position{1, 9}, tokenLeftBracket, "["},
-		token{Position{1, 10}, tokenRightBracket, "]"},
-		token{Position{1, 11}, tokenRightBracket, "]"},
-		token{Position{1, 12}, tokenRightBracket, "]"},
-		token{Position{1, 13}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenLeftBracket, "["},
+		{Position{1, 8}, tokenLeftBracket, "["},
+		{Position{1, 9}, tokenLeftBracket, "["},
+		{Position{1, 10}, tokenRightBracket, "]"},
+		{Position{1, 11}, tokenRightBracket, "]"},
+		{Position{1, 12}, tokenRightBracket, "]"},
+		{Position{1, 13}, tokenEOF, ""},
 	})
 }
 
 func TestKeyEqualNumber(t *testing.T) {
 	testFlow(t, "foo = 42", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenInteger, "42"},
-		token{Position{1, 9}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenInteger, "42"},
+		{Position{1, 9}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = +42", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenInteger, "+42"},
-		token{Position{1, 10}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenInteger, "+42"},
+		{Position{1, 10}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = -42", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenInteger, "-42"},
-		token{Position{1, 10}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenInteger, "-42"},
+		{Position{1, 10}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = 4.2", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenFloat, "4.2"},
-		token{Position{1, 10}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenFloat, "4.2"},
+		{Position{1, 10}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = +4.2", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenFloat, "+4.2"},
-		token{Position{1, 11}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenFloat, "+4.2"},
+		{Position{1, 11}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = -4.2", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenFloat, "-4.2"},
-		token{Position{1, 11}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenFloat, "-4.2"},
+		{Position{1, 11}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = 1_000", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenInteger, "1_000"},
-		token{Position{1, 12}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenInteger, "1_000"},
+		{Position{1, 12}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = 5_349_221", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenInteger, "5_349_221"},
-		token{Position{1, 16}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenInteger, "5_349_221"},
+		{Position{1, 16}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = 1_2_3_4_5", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenInteger, "1_2_3_4_5"},
-		token{Position{1, 16}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenInteger, "1_2_3_4_5"},
+		{Position{1, 16}, tokenEOF, ""},
 	})
 
 	testFlow(t, "flt8 = 9_224_617.445_991_228_313", []token{
-		token{Position{1, 1}, tokenKey, "flt8"},
-		token{Position{1, 6}, tokenEqual, "="},
-		token{Position{1, 8}, tokenFloat, "9_224_617.445_991_228_313"},
-		token{Position{1, 33}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "flt8"},
+		{Position{1, 6}, tokenEqual, "="},
+		{Position{1, 8}, tokenFloat, "9_224_617.445_991_228_313"},
+		{Position{1, 33}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = +", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenError, "no digit in that number"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenError, "no digit in that number"},
 	})
 }
 
 func TestMultiline(t *testing.T) {
 	testFlow(t, "foo = 42\nbar=21", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 7}, tokenInteger, "42"},
-		token{Position{2, 1}, tokenKey, "bar"},
-		token{Position{2, 4}, tokenEqual, "="},
-		token{Position{2, 5}, tokenInteger, "21"},
-		token{Position{2, 7}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 7}, tokenInteger, "42"},
+		{Position{2, 1}, tokenKey, "bar"},
+		{Position{2, 4}, tokenEqual, "="},
+		{Position{2, 5}, tokenInteger, "21"},
+		{Position{2, 7}, tokenEOF, ""},
 	})
 }
 
 func TestKeyEqualStringUnicodeEscape(t *testing.T) {
 	testFlow(t, `foo = "hello \u2665"`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, "hello ♥"},
-		token{Position{1, 21}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, "hello ♥"},
+		{Position{1, 21}, tokenEOF, ""},
 	})
 	testFlow(t, `foo = "hello \U000003B4"`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, "hello δ"},
-		token{Position{1, 25}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, "hello δ"},
+		{Position{1, 25}, tokenEOF, ""},
 	})
 	testFlow(t, `foo = "\u2"`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenError, "unfinished unicode escape"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenError, "unfinished unicode escape"},
 	})
 	testFlow(t, `foo = "\U2"`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenError, "unfinished unicode escape"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenError, "unfinished unicode escape"},
 	})
 }
 
 func TestKeyEqualStringNoEscape(t *testing.T) {
 	testFlow(t, "foo = \"hello \u0002\"", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenError, "unescaped control character U+0002"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenError, "unescaped control character U+0002"},
 	})
 	testFlow(t, "foo = \"hello \u001F\"", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenError, "unescaped control character U+001F"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenError, "unescaped control character U+001F"},
 	})
 }
 
 func TestLiteralString(t *testing.T) {
 	testFlow(t, `foo = 'C:\Users\nodejs\templates'`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, `C:\Users\nodejs\templates`},
-		token{Position{1, 34}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, `C:\Users\nodejs\templates`},
+		{Position{1, 34}, tokenEOF, ""},
 	})
 	testFlow(t, `foo = '\\ServerX\admin$\system32\'`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, `\\ServerX\admin$\system32\`},
-		token{Position{1, 35}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, `\\ServerX\admin$\system32\`},
+		{Position{1, 35}, tokenEOF, ""},
 	})
 	testFlow(t, `foo = 'Tom "Dubs" Preston-Werner'`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, `Tom "Dubs" Preston-Werner`},
-		token{Position{1, 34}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, `Tom "Dubs" Preston-Werner`},
+		{Position{1, 34}, tokenEOF, ""},
 	})
 	testFlow(t, `foo = '<\i\c*\s*>'`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, `<\i\c*\s*>`},
-		token{Position{1, 19}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, `<\i\c*\s*>`},
+		{Position{1, 19}, tokenEOF, ""},
 	})
 	testFlow(t, `foo = 'C:\Users\nodejs\unfinis`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenError, "unclosed string"},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenError, "unclosed string"},
 	})
 }
 
 func TestMultilineLiteralString(t *testing.T) {
 	testFlow(t, `foo = '''hello 'literal' world'''`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 10}, tokenString, `hello 'literal' world`},
-		token{Position{1, 34}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 10}, tokenString, `hello 'literal' world`},
+		{Position{1, 34}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = '''\nhello\n'literal'\nworld'''", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{2, 1}, tokenString, "hello\n'literal'\nworld"},
-		token{Position{4, 9}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{2, 1}, tokenString, "hello\n'literal'\nworld"},
+		{Position{4, 9}, tokenEOF, ""},
 	})
 	testFlow(t, "foo = '''\r\nhello\r\n'literal'\r\nworld'''", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{2, 1}, tokenString, "hello\r\n'literal'\r\nworld"},
-		token{Position{4, 9}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{2, 1}, tokenString, "hello\r\n'literal'\r\nworld"},
+		{Position{4, 9}, tokenEOF, ""},
 	})
 }
 
 func TestMultilineString(t *testing.T) {
 	testFlow(t, `foo = """hello "literal" world"""`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 10}, tokenString, `hello "literal" world`},
-		token{Position{1, 34}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 10}, tokenString, `hello "literal" world`},
+		{Position{1, 34}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = \"\"\"\r\nhello\\\r\n\"literal\"\\\nworld\"\"\"", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{2, 1}, tokenString, "hello\"literal\"world"},
-		token{Position{4, 9}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{2, 1}, tokenString, "hello\"literal\"world"},
+		{Position{4, 9}, tokenEOF, ""},
 	})
 
 	testFlow(t, "foo = \"\"\"\\\n    \\\n    \\\n    hello\\\nmultiline\\\nworld\"\"\"", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 10}, tokenString, "hellomultilineworld"},
-		token{Position{6, 9}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 10}, tokenString, "hellomultilineworld"},
+		{Position{6, 9}, tokenEOF, ""},
 	})
 
 	testFlow(t, "key2 = \"\"\"\nThe quick brown \\\n\n\n  fox jumps over \\\n    the lazy dog.\"\"\"", []token{
-		token{Position{1, 1}, tokenKey, "key2"},
-		token{Position{1, 6}, tokenEqual, "="},
-		token{Position{2, 1}, tokenString, "The quick brown fox jumps over the lazy dog."},
-		token{Position{6, 21}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "key2"},
+		{Position{1, 6}, tokenEqual, "="},
+		{Position{2, 1}, tokenString, "The quick brown fox jumps over the lazy dog."},
+		{Position{6, 21}, tokenEOF, ""},
 	})
 
 	testFlow(t, "key2 = \"\"\"\\\n       The quick brown \\\n       fox jumps over \\\n       the lazy dog.\\\n       \"\"\"", []token{
-		token{Position{1, 1}, tokenKey, "key2"},
-		token{Position{1, 6}, tokenEqual, "="},
-		token{Position{1, 11}, tokenString, "The quick brown fox jumps over the lazy dog."},
-		token{Position{5, 11}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "key2"},
+		{Position{1, 6}, tokenEqual, "="},
+		{Position{1, 11}, tokenString, "The quick brown fox jumps over the lazy dog."},
+		{Position{5, 11}, tokenEOF, ""},
 	})
 
 	testFlow(t, `key2 = "Roses are red\nViolets are blue"`, []token{
-		token{Position{1, 1}, tokenKey, "key2"},
-		token{Position{1, 6}, tokenEqual, "="},
-		token{Position{1, 9}, tokenString, "Roses are red\nViolets are blue"},
-		token{Position{1, 41}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "key2"},
+		{Position{1, 6}, tokenEqual, "="},
+		{Position{1, 9}, tokenString, "Roses are red\nViolets are blue"},
+		{Position{1, 41}, tokenEOF, ""},
 	})
 
 	testFlow(t, "key2 = \"\"\"\nRoses are red\nViolets are blue\"\"\"", []token{
-		token{Position{1, 1}, tokenKey, "key2"},
-		token{Position{1, 6}, tokenEqual, "="},
-		token{Position{2, 1}, tokenString, "Roses are red\nViolets are blue"},
-		token{Position{3, 20}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "key2"},
+		{Position{1, 6}, tokenEqual, "="},
+		{Position{2, 1}, tokenString, "Roses are red\nViolets are blue"},
+		{Position{3, 20}, tokenEOF, ""},
 	})
 }
 
 func TestUnicodeString(t *testing.T) {
 	testFlow(t, `foo = "hello ♥ world"`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, "hello ♥ world"},
-		token{Position{1, 22}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, "hello ♥ world"},
+		{Position{1, 22}, tokenEOF, ""},
 	})
 }
 func TestEscapeInString(t *testing.T) {
 	testFlow(t, `foo = "\b\f\/"`, []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenEqual, "="},
-		token{Position{1, 8}, tokenString, "\b\f/"},
-		token{Position{1, 15}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenEqual, "="},
+		{Position{1, 8}, tokenString, "\b\f/"},
+		{Position{1, 15}, tokenEOF, ""},
 	})
 }
 
 func TestKeyGroupArray(t *testing.T) {
 	testFlow(t, "[[foo]]", []token{
-		token{Position{1, 1}, tokenDoubleLeftBracket, "[["},
-		token{Position{1, 3}, tokenKeyGroupArray, "foo"},
-		token{Position{1, 6}, tokenDoubleRightBracket, "]]"},
-		token{Position{1, 8}, tokenEOF, ""},
+		{Position{1, 1}, tokenDoubleLeftBracket, "[["},
+		{Position{1, 3}, tokenKeyGroupArray, "foo"},
+		{Position{1, 6}, tokenDoubleRightBracket, "]]"},
+		{Position{1, 8}, tokenEOF, ""},
 	})
 }
 
 func TestQuotedKey(t *testing.T) {
 	testFlow(t, "\"a b\" = 42", []token{
-		token{Position{1, 1}, tokenKey, "\"a b\""},
-		token{Position{1, 7}, tokenEqual, "="},
-		token{Position{1, 9}, tokenInteger, "42"},
-		token{Position{1, 11}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "\"a b\""},
+		{Position{1, 7}, tokenEqual, "="},
+		{Position{1, 9}, tokenInteger, "42"},
+		{Position{1, 11}, tokenEOF, ""},
 	})
 }
 
 func TestKeyNewline(t *testing.T) {
 	testFlow(t, "a\n= 4", []token{
-		token{Position{1, 1}, tokenError, "keys cannot contain new lines"},
+		{Position{1, 1}, tokenError, "keys cannot contain new lines"},
 	})
 }
 
 func TestInvalidFloat(t *testing.T) {
 	testFlow(t, "a=7e1_", []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 2}, tokenEqual, "="},
-		token{Position{1, 3}, tokenFloat, "7e1_"},
-		token{Position{1, 7}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 2}, tokenEqual, "="},
+		{Position{1, 3}, tokenFloat, "7e1_"},
+		{Position{1, 7}, tokenEOF, ""},
 	})
 }
 
 func TestLexUnknownRvalue(t *testing.T) {
 	testFlow(t, `a = !b`, []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenError, "no value can start with !"},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenError, "no value can start with !"},
 	})
 
 	testFlow(t, `a = \b`, []token{
-		token{Position{1, 1}, tokenKey, "a"},
-		token{Position{1, 3}, tokenEqual, "="},
-		token{Position{1, 5}, tokenError, `no value can start with \`},
+		{Position{1, 1}, tokenKey, "a"},
+		{Position{1, 3}, tokenEqual, "="},
+		{Position{1, 5}, tokenError, `no value can start with \`},
 	})
 }
diff --git a/parser_test.go b/parser_test.go
index 784cdb8..7f32ea8 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -269,14 +269,14 @@
 func TestArrayNested(t *testing.T) {
 	tree, err := Load("a = [[42, 21], [10]]")
 	assertTree(t, tree, err, map[string]interface{}{
-		"a": [][]int64{[]int64{int64(42), int64(21)}, []int64{int64(10)}},
+		"a": [][]int64{{int64(42), int64(21)}, {int64(10)}},
 	})
 }
 
 func TestNestedEmptyArrays(t *testing.T) {
 	tree, err := Load("a = [[[]]]")
 	assertTree(t, tree, err, map[string]interface{}{
-		"a": [][][]interface{}{[][]interface{}{[]interface{}{}}},
+		"a": [][][]interface{}{{{}}},
 	})
 }
 
@@ -295,7 +295,7 @@
 func TestArrayNestedStrings(t *testing.T) {
 	tree, err := Load("data = [ [\"gamma\", \"delta\"], [\"Foo\"] ]")
 	assertTree(t, tree, err, map[string]interface{}{
-		"data": [][]string{[]string{"gamma", "delta"}, []string{"Foo"}},
+		"data": [][]string{{"gamma", "delta"}, {"Foo"}},
 	})
 }
 
@@ -394,7 +394,7 @@
 	tree, err := Load(`points = [{ x = 1, y = 2 }]`)
 	assertTree(t, tree, err, map[string]interface{}{
 		"points": []map[string]interface{}{
-			map[string]interface{}{
+			{
 				"x": int64(1),
 				"y": int64(2),
 			},
@@ -668,10 +668,10 @@
 	assertPosition(t,
 		"[foo]\nbar=42\nbaz=69",
 		map[string]Position{
-			"":        Position{1, 1},
-			"foo":     Position{1, 1},
-			"foo.bar": Position{2, 1},
-			"foo.baz": Position{3, 1},
+			"":        {1, 1},
+			"foo":     {1, 1},
+			"foo.bar": {2, 1},
+			"foo.baz": {3, 1},
 		})
 }
 
@@ -679,10 +679,10 @@
 	assertPosition(t,
 		"  [foo]\n  bar=42\n  baz=69",
 		map[string]Position{
-			"":        Position{1, 1},
-			"foo":     Position{1, 3},
-			"foo.bar": Position{2, 3},
-			"foo.baz": Position{3, 3},
+			"":        {1, 1},
+			"foo":     {1, 3},
+			"foo.bar": {2, 3},
+			"foo.baz": {3, 3},
 		})
 }
 
@@ -690,10 +690,10 @@
 	assertPosition(t,
 		"[[foo]]\nbar=42\nbaz=69",
 		map[string]Position{
-			"":        Position{1, 1},
-			"foo":     Position{1, 1},
-			"foo.bar": Position{2, 1},
-			"foo.baz": Position{3, 1},
+			"":        {1, 1},
+			"foo":     {1, 1},
+			"foo.bar": {2, 1},
+			"foo.baz": {3, 1},
 		})
 }
 
@@ -701,11 +701,11 @@
 	assertPosition(t,
 		"[foo.bar]\na=42\nb=69",
 		map[string]Position{
-			"":          Position{1, 1},
-			"foo":       Position{1, 1},
-			"foo.bar":   Position{1, 1},
-			"foo.bar.a": Position{2, 1},
-			"foo.bar.b": Position{3, 1},
+			"":          {1, 1},
+			"foo":       {1, 1},
+			"foo.bar":   {1, 1},
+			"foo.bar.a": {2, 1},
+			"foo.bar.b": {3, 1},
 		})
 }
 
diff --git a/position_test.go b/position_test.go
index 4cf0ebd..63ad1af 100644
--- a/position_test.go
+++ b/position_test.go
@@ -18,9 +18,9 @@
 
 func TestInvalid(t *testing.T) {
 	for i, v := range []Position{
-		Position{0, 1234},
-		Position{1234, 0},
-		Position{0, 0},
+		{0, 1234},
+		{1234, 0},
+		{0, 0},
 	} {
 		if !v.Invalid() {
 			t.Errorf("Position at %v is valid: %v", i, v)
diff --git a/querylexer_test.go b/querylexer_test.go
index 48338e5..2d0803f 100644
--- a/querylexer_test.go
+++ b/querylexer_test.go
@@ -36,143 +36,143 @@
 
 func TestLexSpecialChars(t *testing.T) {
 	testQLFlow(t, " .$[]..()?*", []token{
-		token{Position{1, 2}, tokenDot, "."},
-		token{Position{1, 3}, tokenDollar, "$"},
-		token{Position{1, 4}, tokenLeftBracket, "["},
-		token{Position{1, 5}, tokenRightBracket, "]"},
-		token{Position{1, 6}, tokenDotDot, ".."},
-		token{Position{1, 8}, tokenLeftParen, "("},
-		token{Position{1, 9}, tokenRightParen, ")"},
-		token{Position{1, 10}, tokenQuestion, "?"},
-		token{Position{1, 11}, tokenStar, "*"},
-		token{Position{1, 12}, tokenEOF, ""},
+		{Position{1, 2}, tokenDot, "."},
+		{Position{1, 3}, tokenDollar, "$"},
+		{Position{1, 4}, tokenLeftBracket, "["},
+		{Position{1, 5}, tokenRightBracket, "]"},
+		{Position{1, 6}, tokenDotDot, ".."},
+		{Position{1, 8}, tokenLeftParen, "("},
+		{Position{1, 9}, tokenRightParen, ")"},
+		{Position{1, 10}, tokenQuestion, "?"},
+		{Position{1, 11}, tokenStar, "*"},
+		{Position{1, 12}, tokenEOF, ""},
 	})
 }
 
 func TestLexString(t *testing.T) {
 	testQLFlow(t, "'foo\n'", []token{
-		token{Position{1, 2}, tokenString, "foo\n"},
-		token{Position{2, 2}, tokenEOF, ""},
+		{Position{1, 2}, tokenString, "foo\n"},
+		{Position{2, 2}, tokenEOF, ""},
 	})
 }
 
 func TestLexDoubleString(t *testing.T) {
 	testQLFlow(t, `"bar"`, []token{
-		token{Position{1, 2}, tokenString, "bar"},
-		token{Position{1, 6}, tokenEOF, ""},
+		{Position{1, 2}, tokenString, "bar"},
+		{Position{1, 6}, tokenEOF, ""},
 	})
 }
 
 func TestLexStringEscapes(t *testing.T) {
 	testQLFlow(t, `"foo \" \' \b \f \/ \t \r \\ \u03A9 \U00012345 \n bar"`, []token{
-		token{Position{1, 2}, tokenString, "foo \" ' \b \f / \t \r \\ \u03A9 \U00012345 \n bar"},
-		token{Position{1, 55}, tokenEOF, ""},
+		{Position{1, 2}, tokenString, "foo \" ' \b \f / \t \r \\ \u03A9 \U00012345 \n bar"},
+		{Position{1, 55}, tokenEOF, ""},
 	})
 }
 
 func TestLexStringUnfinishedUnicode4(t *testing.T) {
 	testQLFlow(t, `"\u000"`, []token{
-		token{Position{1, 2}, tokenError, "unfinished unicode escape"},
+		{Position{1, 2}, tokenError, "unfinished unicode escape"},
 	})
 }
 
 func TestLexStringUnfinishedUnicode8(t *testing.T) {
 	testQLFlow(t, `"\U0000"`, []token{
-		token{Position{1, 2}, tokenError, "unfinished unicode escape"},
+		{Position{1, 2}, tokenError, "unfinished unicode escape"},
 	})
 }
 
 func TestLexStringInvalidEscape(t *testing.T) {
 	testQLFlow(t, `"\x"`, []token{
-		token{Position{1, 2}, tokenError, "invalid escape sequence: \\x"},
+		{Position{1, 2}, tokenError, "invalid escape sequence: \\x"},
 	})
 }
 
 func TestLexStringUnfinished(t *testing.T) {
 	testQLFlow(t, `"bar`, []token{
-		token{Position{1, 2}, tokenError, "unclosed string"},
+		{Position{1, 2}, tokenError, "unclosed string"},
 	})
 }
 
 func TestLexKey(t *testing.T) {
 	testQLFlow(t, "foo", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 4}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 4}, tokenEOF, ""},
 	})
 }
 
 func TestLexRecurse(t *testing.T) {
 	testQLFlow(t, "$..*", []token{
-		token{Position{1, 1}, tokenDollar, "$"},
-		token{Position{1, 2}, tokenDotDot, ".."},
-		token{Position{1, 4}, tokenStar, "*"},
-		token{Position{1, 5}, tokenEOF, ""},
+		{Position{1, 1}, tokenDollar, "$"},
+		{Position{1, 2}, tokenDotDot, ".."},
+		{Position{1, 4}, tokenStar, "*"},
+		{Position{1, 5}, tokenEOF, ""},
 	})
 }
 
 func TestLexBracketKey(t *testing.T) {
 	testQLFlow(t, "$[foo]", []token{
-		token{Position{1, 1}, tokenDollar, "$"},
-		token{Position{1, 2}, tokenLeftBracket, "["},
-		token{Position{1, 3}, tokenKey, "foo"},
-		token{Position{1, 6}, tokenRightBracket, "]"},
-		token{Position{1, 7}, tokenEOF, ""},
+		{Position{1, 1}, tokenDollar, "$"},
+		{Position{1, 2}, tokenLeftBracket, "["},
+		{Position{1, 3}, tokenKey, "foo"},
+		{Position{1, 6}, tokenRightBracket, "]"},
+		{Position{1, 7}, tokenEOF, ""},
 	})
 }
 
 func TestLexSpace(t *testing.T) {
 	testQLFlow(t, "foo bar baz", []token{
-		token{Position{1, 1}, tokenKey, "foo"},
-		token{Position{1, 5}, tokenKey, "bar"},
-		token{Position{1, 9}, tokenKey, "baz"},
-		token{Position{1, 12}, tokenEOF, ""},
+		{Position{1, 1}, tokenKey, "foo"},
+		{Position{1, 5}, tokenKey, "bar"},
+		{Position{1, 9}, tokenKey, "baz"},
+		{Position{1, 12}, tokenEOF, ""},
 	})
 }
 
 func TestLexInteger(t *testing.T) {
 	testQLFlow(t, "100 +200 -300", []token{
-		token{Position{1, 1}, tokenInteger, "100"},
-		token{Position{1, 5}, tokenInteger, "+200"},
-		token{Position{1, 10}, tokenInteger, "-300"},
-		token{Position{1, 14}, tokenEOF, ""},
+		{Position{1, 1}, tokenInteger, "100"},
+		{Position{1, 5}, tokenInteger, "+200"},
+		{Position{1, 10}, tokenInteger, "-300"},
+		{Position{1, 14}, tokenEOF, ""},
 	})
 }
 
 func TestLexFloat(t *testing.T) {
 	testQLFlow(t, "100.0 +200.0 -300.0", []token{
-		token{Position{1, 1}, tokenFloat, "100.0"},
-		token{Position{1, 7}, tokenFloat, "+200.0"},
-		token{Position{1, 14}, tokenFloat, "-300.0"},
-		token{Position{1, 20}, tokenEOF, ""},
+		{Position{1, 1}, tokenFloat, "100.0"},
+		{Position{1, 7}, tokenFloat, "+200.0"},
+		{Position{1, 14}, tokenFloat, "-300.0"},
+		{Position{1, 20}, tokenEOF, ""},
 	})
 }
 
 func TestLexFloatWithMultipleDots(t *testing.T) {
 	testQLFlow(t, "4.2.", []token{
-		token{Position{1, 1}, tokenError, "cannot have two dots in one float"},
+		{Position{1, 1}, tokenError, "cannot have two dots in one float"},
 	})
 }
 
 func TestLexFloatLeadingDot(t *testing.T) {
 	testQLFlow(t, "+.1", []token{
-		token{Position{1, 1}, tokenError, "cannot start float with a dot"},
+		{Position{1, 1}, tokenError, "cannot start float with a dot"},
 	})
 }
 
 func TestLexFloatWithTrailingDot(t *testing.T) {
 	testQLFlow(t, "42.", []token{
-		token{Position{1, 1}, tokenError, "float cannot end with a dot"},
+		{Position{1, 1}, tokenError, "float cannot end with a dot"},
 	})
 }
 
 func TestLexNumberWithoutDigit(t *testing.T) {
 	testQLFlow(t, "+", []token{
-		token{Position{1, 1}, tokenError, "no digit in that number"},
+		{Position{1, 1}, tokenError, "no digit in that number"},
 	})
 }
 
 func TestLexUnknown(t *testing.T) {
 	testQLFlow(t, "^", []token{
-		token{Position{1, 1}, tokenError, "unexpected char: '94'"},
+		{Position{1, 1}, tokenError, "unexpected char: '94'"},
 	})
 }
