'val'         Keyword.Declaration
' '           Text.Whitespace
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
'\n'          Text.Whitespace

'val'         Keyword.Declaration
' '           Text.Whitespace
'y'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'val'         Keyword.Declaration
' '           Text.Whitespace
'z'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'var'         Keyword.Declaration
' '           Text.Whitespace
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
'\n'          Text.Whitespace

'var'         Keyword.Declaration
' '           Text.Whitespace
'y'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'var'         Keyword.Declaration
' '           Text.Whitespace
'z'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'val'         Keyword.Declaration
' '           Text.Whitespace
'('           Punctuation
'a'           Name
','           Punctuation
' '           Text.Whitespace
'b'           Name
')'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'val'         Keyword.Declaration
' '           Text.Whitespace
'Some'        Name.Class
'('           Punctuation
'a'           Name
')'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Some'        Name.Class
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword.Declaration
' '           Text.Whitespace
'Pair'        Name.Class
'('           Punctuation
'a'           Name
','           Punctuation
' '           Text.Whitespace
'b'           Name
')'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Pair'        Name.Class
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'val'         Keyword.Declaration
' '           Text.Whitespace
'Test'        Name.Class
'.'           Punctuation
'Pair'        Name.Class
'('           Punctuation
'a'           Name
')'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Test'        Name.Class
'.'           Punctuation
'Pair'        Name.Class
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'val'         Keyword.Declaration
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'::'          Operator
' '           Text.Whitespace
'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'::'          Operator
' '           Text.Whitespace
'Nil'         Name.Class
'\n'          Text.Whitespace

'var'         Keyword.Declaration
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'::'          Operator
' '           Text.Whitespace
'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'::'          Operator
' '           Text.Whitespace
'Nil'         Name.Class
'\n'          Text.Whitespace

'val'         Keyword.Declaration
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'+:'          Operator
' '           Text.Whitespace
'rest'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'val'         Keyword.Declaration
' '           Text.Whitespace
'foo_+'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"foo plus"'  Literal.String
'\n'          Text.Whitespace

'val'         Keyword.Declaration
' '           Text.Whitespace
'foo_⌬⌬'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"double benzene"' Literal.String
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'abs'         Name.Function
'['           Punctuation
'T'           Name.Class
']'           Punctuation
'('           Punctuation
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'>='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'new'         Keyword
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'now'         Name
' '           Text.Whitespace
'-'           Operator
'x'           Name
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'abs'         Name.Function
'('           Punctuation
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'>='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'new'         Keyword
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'now'         Name
' '           Text.Whitespace
'-'           Operator
'x'           Name
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'sum'         Name.Function
'['           Punctuation
'A'           Name.Class
']'           Punctuation
'('           Punctuation
'xs'          Name
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'A'           Name.Class
']'           Punctuation
')'           Punctuation
'('           Punctuation
'implicit'    Keyword
' '           Text.Whitespace
'm'           Name
':'           Punctuation
' '           Text.Whitespace
'Monoid'      Name.Class
'['           Punctuation
'A'           Name.Class
']'           Punctuation
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'A'           Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'sum'         Name.Function
'['           Punctuation
'A'           Name.Class
']'           Punctuation
'('           Punctuation
'xs'          Name
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'A'           Name.Class
']'           Punctuation
')'           Punctuation
'('           Punctuation
'implicit'    Keyword
' '           Text.Whitespace
'Monoid'      Name.Class
'['           Punctuation
'A'           Name.Class
']'           Punctuation
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'A'           Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'sum'         Name.Function
'['           Punctuation
'A'           Name.Class
']'           Punctuation
'('           Punctuation
'xs'          Name
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'A'           Name.Class
']'           Punctuation
')'           Punctuation
'('           Punctuation
'using'       Keyword
' '           Text.Whitespace
'm'           Name
':'           Punctuation
' '           Text.Whitespace
'Monoid'      Name.Class
'['           Punctuation
'A'           Name.Class
']'           Punctuation
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'A'           Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'sum'         Name.Function
'['           Punctuation
'A'           Name.Class
']'           Punctuation
'('           Punctuation
'xs'          Name
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'A'           Name.Class
']'           Punctuation
')'           Punctuation
'('           Punctuation
'using'       Keyword
' '           Text.Whitespace
'Monoid'      Name.Class
'['           Punctuation
'A'           Name.Class
']'           Punctuation
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'A'           Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'reduceRight' Name.Function
'('           Punctuation
'op'          Name
':'           Punctuation
' '           Text.Whitespace
'('           Punctuation
'T'           Name.Class
','           Punctuation
' '           Text.Whitespace
'T'           Name.Class
')'           Punctuation
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'T'           Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foldRight'   Name.Function
'['           Punctuation
']'           Punctuation
'('           Punctuation
'z'           Name
':'           Punctuation
' '           Text.Whitespace
'U'           Name.Class
')'           Punctuation
'('           Punctuation
'op'          Name
':'           Punctuation
' '           Text.Whitespace
'('           Punctuation
'T'           Name.Class
','           Punctuation
' '           Text.Whitespace
'U'           Name.Class
')'           Punctuation
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'U'           Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'U'           Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'obj'         Name.Function
'('           Punctuation
'fields'      Name
':'           Punctuation
' '           Text.Whitespace
'('           Punctuation
'String'      Name.Class
','           Punctuation
' '           Text.Whitespace
'Any'         Name.Class
')'           Punctuation
'*'           Operator
','           Punctuation
' '           Text.Whitespace
'test'        Name
':'           Punctuation
' '           Text.Whitespace
'String'      Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Json'        Name.Class
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'::'          Name.Function
' '           Text.Whitespace
'('           Punctuation
'xs'          Name
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'::'          Name
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'xs'          Name
')'           Punctuation
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'::'          Name.Function
'('           Punctuation
'xs'          Name
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'::'          Name
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'xs'          Name
')'           Punctuation
'\n\n'        Text.Whitespace

'trait'       Keyword
' '           Text.Whitespace
'X'           Name.Class
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n'          Text.Whitespace

'object'      Keyword
' '           Text.Whitespace
'X'           Name.Class
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Y'           Name.Class
'\n'          Text.Whitespace

'open'        Keyword
' '           Text.Whitespace
'object'      Keyword
' '           Text.Whitespace
'X'           Name.Class
':'           Punctuation
'\n'          Text.Whitespace

'open'        Keyword
' '           Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Y'           Name.Class
':'           Punctuation
'\n'          Text.Whitespace

'case'        Keyword
' '           Text.Whitespace
'object'      Keyword
' '           Text.Whitespace
'X'           Name.Class
'\n'          Text.Whitespace

'case'        Keyword
' '           Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Y'           Name.Class
'('           Punctuation
')'           Punctuation
'\n'          Text.Whitespace

'package'     Keyword
' '           Text.Whitespace
'object'      Keyword
' '           Text.Whitespace
'x'           Name.Namespace
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n'          Text.Whitespace

'package'     Keyword
' '           Text.Whitespace
'object'      Keyword
' '           Text.Whitespace
'y'           Name.Namespace
':'           Punctuation
'\n\n'        Text.Whitespace

'type'        Keyword
' '           Text.Whitespace
'X'           Name.Class
'\n'          Text.Whitespace

'type'        Keyword
' '           Text.Whitespace
'X'           Name.Class
' '           Text.Whitespace
'<:'          Operator
' '           Text.Whitespace
'Y'           Name.Class
'\n'          Text.Whitespace

'type'        Keyword
' '           Text.Whitespace
'X'           Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Y'           Name.Class
'\n'          Text.Whitespace

'type'        Keyword
' '           Text.Whitespace
'X'           Name.Class
'['           Punctuation
'Y'           Name.Class
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Y'           Name.Class
' '           Text.Whitespace
'with'        Keyword
' '           Text.Whitespace
'Z'           Name.Class
'\n'          Text.Whitespace

'type'        Keyword
' '           Text.Whitespace
'X'           Name.Class
'['           Punctuation
'Y'           Name.Class
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Y'           Name.Class
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'('           Punctuation
'1'           Literal.Number.Integer
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'type'        Keyword
' '           Text.Whitespace
'X'           Name.Class
'['           Punctuation
'Y'           Name.Class
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'('           Punctuation
'Y'           Name.Class
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'('           Punctuation
'1'           Literal.Number.Integer
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'type'        Keyword
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Bar'         Name.Class
'.'           Punctuation
'Baz'         Name.Class
'\n\n'        Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'foo'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'foo'         Name
':'           Punctuation
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'listOrd'     Name
'['           Punctuation
'T'           Name.Class
':'           Punctuation
' '           Text.Whitespace
'Ordering'    Name.Class
']'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Ordering'    Name.Class
'['           Punctuation
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
']'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'listOrd'     Name
'('           Punctuation
'using'       Keyword
' '           Text.Whitespace
'ev'          Name
':'           Punctuation
' '           Text.Whitespace
'Ev'          Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'Ordering'    Name.Class
'['           Punctuation
'Int'         Name.Class
']'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'['           Punctuation
'T'           Name.Class
':'           Punctuation
' '           Text.Whitespace
'Ordering'    Name.Class
']'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Ordering'    Name.Class
'['           Punctuation
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
']'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'('           Punctuation
'using'       Keyword
' '           Text.Whitespace
'ev'          Name
':'           Punctuation
' '           Text.Whitespace
'Ev'          Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'intOrd'      Name
':'           Punctuation
' '           Text.Whitespace
'Ordering'    Name.Class
'['           Punctuation
'Int'         Name.Class
']'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'foo'         Name
':'           Punctuation
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'`foo`'       Name
':'           Punctuation
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'listOrd'     Name
'['           Punctuation
'T'           Name.Class
':'           Punctuation
' '           Text.Whitespace
'Ordering'    Name.Class
']'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Ordering'    Name.Class
'['           Punctuation
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'listOrd'     Name
'('           Punctuation
'using'       Keyword
' '           Text.Whitespace
'ev'          Name
':'           Punctuation
' '           Text.Whitespace
'Ev'          Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'Ordering'    Name.Class
'['           Punctuation
'Int'         Name.Class
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'['           Punctuation
'T'           Name.Class
':'           Punctuation
' '           Text.Whitespace
'Ordering'    Name.Class
']'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Ordering'    Name.Class
'['           Punctuation
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'('           Punctuation
'using'       Keyword
' '           Text.Whitespace
'ev'          Name
':'           Punctuation
' '           Text.Whitespace
'Ev'          Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'???'         Operator
'\n\n'        Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'sumMonoid'   Name
':'           Punctuation
' '           Text.Whitespace
'Monoid'      Name.Class
'['           Punctuation
'Int'         Name.Class
']'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'extension'   Keyword
' '           Text.Whitespace
'('           Punctuation
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
' '           Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'combine'     Name.Function
'('           Punctuation
'y'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
' \n  '       Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'unit'        Name.Function
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'trait'       Keyword
' '           Text.Whitespace
'Ord'         Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
':'           Punctuation
'\n   '       Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'compare'     Name.Function
'('           Punctuation
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
','           Punctuation
' '           Text.Whitespace
'y'           Name
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
'\n   '       Text.Whitespace
'extension'   Keyword
' '           Text.Whitespace
'('           Punctuation
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
')'           Punctuation
' '           Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'<'           Name.Function
' '           Text.Whitespace
'('           Punctuation
'y'           Name
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
')'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'compare'     Name
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n   '       Text.Whitespace
'extension'   Keyword
' '           Text.Whitespace
'('           Punctuation
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
')'           Punctuation
' '           Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'>'           Name.Function
' '           Text.Whitespace
'('           Punctuation
'y'           Name
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
')'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'compare'     Name
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'intOrd'      Name
':'           Punctuation
' '           Text.Whitespace
'Ord'         Name.Class
'['           Punctuation
'Int'         Name.Class
']'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n   '       Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'compare'     Name.Function
'('           Punctuation
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
','           Punctuation
' '           Text.Whitespace
'y'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
' '           Text.Whitespace
'='           Operator
'\n      '    Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'-'           Operator
'1'           Literal.Number.Integer
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'+'           Operator
'1'           Literal.Number.Integer
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'given'       Keyword
' '           Text.Whitespace
'listOrd'     Name
'['           Punctuation
'T'           Name.Class
']'           Punctuation
'('           Punctuation
'using'       Keyword
' '           Text.Whitespace
'ord'         Name
':'           Punctuation
' '           Text.Whitespace
'Ord'         Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Ord'         Name.Class
'['           Punctuation
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
']'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n   '       Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'compare'     Name.Function
'('           Punctuation
'xs'          Name
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
','           Punctuation
' '           Text.Whitespace
'ys'          Name
':'           Punctuation
' '           Text.Whitespace
'List'        Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'('           Punctuation
'xs'          Name
','           Punctuation
' '           Text.Whitespace
'ys'          Name
')'           Punctuation
' '           Text.Whitespace
'match'       Keyword
'\n      '    Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'('           Punctuation
'Nil'         Name.Class
','           Punctuation
' '           Text.Whitespace
'Nil'         Name.Class
')'           Punctuation
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n      '    Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'('           Punctuation
'Nil'         Name.Class
','           Punctuation
' '           Text.Whitespace
'_'           Name
')'           Punctuation
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'-'           Operator
'1'           Literal.Number.Integer
'\n      '    Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'('           Punctuation
'_'           Name
','           Punctuation
' '           Text.Whitespace
'Nil'         Name.Class
')'           Punctuation
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'+'           Operator
'1'           Literal.Number.Integer
'\n      '    Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'('           Punctuation
'x'           Name
' '           Text.Whitespace
'::'          Operator
' '           Text.Whitespace
'xs1'         Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
'::'          Operator
' '           Text.Whitespace
'ys1'         Name
')'           Punctuation
' '           Text.Whitespace
'=>'          Operator
'\n         ' Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'fst'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'ord'         Name
'.'           Punctuation
'compare'     Name
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
'\n         ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'fst'         Name
' '           Text.Whitespace
'!='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'fst'         Name
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'compare'     Name
'('           Punctuation
'xs1'         Name
','           Punctuation
' '           Text.Whitespace
'ys1'         Name
')'           Punctuation
'\n'          Text.Whitespace

'trait'       Keyword
' '           Text.Whitespace
'A'           Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'given'       Keyword
' '           Text.Whitespace
'ac'          Name
':'           Punctuation
' '           Text.Whitespace
'C'           Name.Class
'\n'          Text.Whitespace

'trait'       Keyword
' '           Text.Whitespace
'B'           Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'A'           Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'given'       Keyword
' '           Text.Whitespace
'bc'          Name
':'           Punctuation
' '           Text.Whitespace
'C'           Name.Class
'\n'          Text.Whitespace

'object'      Keyword
' '           Text.Whitespace
'O'           Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'B'           Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'summon'      Name
'['           Punctuation
'C'           Name.Class
']'           Punctuation
'\n\n'        Text.Whitespace

'// Classes\n' Comment.Single

'class'       Keyword
' '           Text.Whitespace
'A'           Name.Class
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'B'           Name.Class
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Bar'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'::'          Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Rational'    Name.Class
'('           Punctuation
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
','           Punctuation
' '           Text.Whitespace
'y'           Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'numer'       Name.Function
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'x'           Name
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'denom'       Name.Function
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Cons'        Name.Class
'('           Punctuation
'_head'       Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
','           Punctuation
' '           Text.Whitespace
'_tail'       Name
':'           Punctuation
' '           Text.Whitespace
'IntList'     Name.Class
')'           Punctuation
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'IntList'     Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'head'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'_head'       Name
'\n  '        Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'tail'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'_tail'       Name
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'+'           Name.Function
' '           Text.Whitespace
'('           Punctuation
'that'        Name
':'           Punctuation
' '           Text.Whitespace
'Double'      Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Double'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'+'           Name.Function
' '           Text.Whitespace
'('           Punctuation
'that'        Name
':'           Punctuation
' '           Text.Whitespace
'Float'       Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Float'       Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'+'           Name.Function
' '           Text.Whitespace
'('           Punctuation
'that'        Name
':'           Punctuation
' '           Text.Whitespace
'Long'        Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Long'        Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'+'           Name.Function
' '           Text.Whitespace
'('           Punctuation
'that'        Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'// same for -, *, /, %\n' Comment.Single

'  '          Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'<<'          Name.Function
' '           Text.Whitespace
'('           Punctuation
'cnt'         Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'// same for >>, >>> */\n' Comment.Single

'  '          Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'&'           Name.Function
' '           Text.Whitespace
'('           Punctuation
'that'        Name
':'           Punctuation
' '           Text.Whitespace
'Long'        Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Long'        Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'&'           Name.Function
' '           Text.Whitespace
'('           Punctuation
'that'        Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
' '           Text.Whitespace
'// same for |, ^ */\n' Comment.Single

'  '          Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'=='          Name.Function
' '           Text.Whitespace
'('           Punctuation
'that'        Name
':'           Punctuation
' '           Text.Whitespace
'Double'      Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Boolean'     Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'=='          Name.Function
' '           Text.Whitespace
'('           Punctuation
'that'        Name
':'           Punctuation
' '           Text.Whitespace
'Float'       Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Boolean'     Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'=='          Name.Function
' '           Text.Whitespace
'('           Punctuation
'that'        Name
':'           Punctuation
' '           Text.Whitespace
'Long'        Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Boolean'     Name.Class
' '           Text.Whitespace
'// same for !=, <, >, <=, >=\n' Comment.Single

'end'         Keyword
' '           Text.Whitespace
'Int'         Name.Class
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Sub'         Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Base'        Name.Class
' '           Text.Whitespace
'with'        Keyword
' '           Text.Whitespace
'Something'   Name.Class
' '           Text.Whitespace
'{'           Punctuation
'\n  '        Text.Whitespace
'override'    Keyword
' '           Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'bar'         Name.Function
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n'          Text.Whitespace

'}'           Punctuation
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Succ'        Name.Class
'('           Punctuation
'n'           Name
':'           Punctuation
' '           Text.Whitespace
'Nat'         Name.Class
')'           Punctuation
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Nat'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'// ...\n'    Comment.Single

'open'        Keyword
' '           Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Writer'      Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n  '        Text.Whitespace
'/*'          Comment.Multiline
'*'           Comment.Multiline
' Sends to stdout, can be overridden ' Comment.Multiline
'*/'          Comment.Multiline
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'send'        Name.Function
'('           Punctuation
'x'           Name
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
')'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'println'     Name
'('           Punctuation
'x'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'/*'          Comment.Multiline
'*'           Comment.Multiline
' Sends all arguments using `send` ' Comment.Multiline
'*/'          Comment.Multiline
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'sendAll'     Name.Function
'('           Punctuation
'xs'          Name
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
'*'           Operator
')'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'xs'          Name
'.'           Punctuation
'foreach'     Name
'('           Punctuation
'send'        Name
')'           Punctuation
'\n'          Text.Whitespace

'}'           Punctuation
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'LazyList'    Name.Class
'['           Punctuation
'+'           Operator
'T'           Name.Class
']'           Punctuation
'('           Punctuation
'init'        Name
':'           Punctuation
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'State'       Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
')'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'lazy'        Keyword
' '           Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'state'       Name
':'           Punctuation
' '           Text.Whitespace
'State'       Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'init'        Name
'\t\t\t\n\n'  Text.Whitespace

'trait'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'trait'       Keyword
' '           Text.Whitespace
'Bar'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'trait'       Keyword
' '           Text.Whitespace
'*:'          Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'trait'       Keyword
' '           Text.Whitespace
'*:'          Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'trait'       Keyword
' '           Text.Whitespace
'::'          Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'1'           Literal.Number.Integer
' '           Text.Whitespace
'::'          Operator
' '           Text.Whitespace
'Nil'         Name.Class
'\n'          Text.Whitespace

'1'           Literal.Number.Integer
' '           Text.Whitespace
'::'          Operator
'\n\n'        Text.Whitespace

'object'      Keyword
' '           Text.Whitespace
'⌘'           Name.Class
' '           Text.Whitespace
'{'           Punctuation
'\n  \n'      Text.Whitespace

'}'           Punctuation
'\n'          Text.Whitespace

'object'      Keyword
' '           Text.Whitespace
'Foo'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'object'      Keyword
' '           Text.Whitespace
'Bar'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n'          Text.Whitespace

'object'      Keyword
' '           Text.Whitespace
'Zero'        Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Nat'         Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'.'           Punctuation
'.'           Punctuation
'.'           Punctuation
'\n\n'        Text.Whitespace

'object'      Keyword
' '           Text.Whitespace
'Enum'        Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Enumeration' Name.Class
' '           Text.Whitespace
'{'           Punctuation
'\n  '        Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'Foo'         Name.Class
','           Punctuation
' '           Text.Whitespace
'Bar'         Name.Class
','           Punctuation
' '           Text.Whitespace
'Baz'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Value'       Name.Class
'\n'          Text.Whitespace

'}'           Punctuation
'\n'          Text.Whitespace

'enum'        Keyword
' '           Text.Whitespace
'Color'       Name.Class
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Red'         Name.Class
','           Punctuation
' '           Text.Whitespace
'Green'       Name.Class
','           Punctuation
' '           Text.Whitespace
'Blue'        Name.Class
','           Punctuation
' '           Text.Whitespace
'Magenta'     Name.Class
'\n'          Text.Whitespace

'enum'        Keyword
' '           Text.Whitespace
'Color'       Name.Class
'('           Punctuation
'val'         Keyword.Declaration
' '           Text.Whitespace
'test'        Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Red'         Name.Class
','           Punctuation
' '           Text.Whitespace
'Green'       Name.Class
','           Punctuation
' '           Text.Whitespace
'Blue'        Name.Class
','           Punctuation
' '           Text.Whitespace
'Magenta'     Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'isPrimary'   Name.Function
'('           Punctuation
'color'       Name
':'           Punctuation
' '           Text.Whitespace
'Color'       Name.Class
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'Boolean'     Name.Class
' '           Text.Whitespace
'='           Operator
'\n    '      Text.Whitespace
'color'       Name
' '           Text.Whitespace
'match'       Keyword
'\n        '  Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Red'         Name.Class
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'Green'       Name.Class
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'Blue'        Name.Class
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'true'        Keyword.Constant
'\n        '  Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Magenta'     Name.Class
' '           Text.Whitespace
'=>'          Operator
' '           Text.Whitespace
'false'       Keyword.Constant
'\n'          Text.Whitespace

'enum'        Keyword
' '           Text.Whitespace
'State'       Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
' '           Text.Whitespace
'with'        Keyword
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Empty'       Name.Class
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Cons'        Name.Class
'('           Punctuation
'hd'          Name
':'           Punctuation
' '           Text.Whitespace
'T'           Name.Class
','           Punctuation
' '           Text.Whitespace
'tl'          Name
':'           Punctuation
' '           Text.Whitespace
'LazyList'    Name.Class
'['           Punctuation
'T'           Name.Class
']'           Punctuation
')'           Punctuation
'\n'          Text.Whitespace

'abstract'    Keyword
' '           Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Color'       Name.Class
'\n'          Text.Whitespace

'object'      Keyword
' '           Text.Whitespace
'Color'       Name.Class
' '           Text.Whitespace
'{'           Punctuation
'\n  '        Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'Red'         Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Color'       Name.Class
'('           Punctuation
')'           Punctuation
'\n  '        Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'Green'       Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Color'       Name.Class
'('           Punctuation
')'           Punctuation
'\n  '        Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'Blue'        Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Color'       Name.Class
'('           Punctuation
')'           Punctuation
'\n  '        Text.Whitespace
'val'         Keyword.Declaration
' '           Text.Whitespace
'Magenta'     Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Color'       Name.Class
'('           Punctuation
')'           Punctuation
'\n  '        Text.Whitespace
'.'           Punctuation
'.'           Punctuation
'.'           Punctuation
'\n'          Text.Whitespace

'}'           Punctuation
'\n'          Text.Whitespace

'enum'        Keyword
' '           Text.Whitespace
'Vehicle'     Name.Class
'('           Punctuation
'val'         Keyword.Declaration
' '           Text.Whitespace
'numberOfWheels' Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Unicycle'    Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Vehicle'     Name.Class
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Bicycle'     Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Vehicle'     Name.Class
'('           Punctuation
'2'           Literal.Number.Integer
')'           Punctuation
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Car'         Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Vehicle'     Name.Class
'('           Punctuation
'4'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'}'           Punctuation
'\n'          Text.Whitespace

'enum'        Keyword
' '           Text.Whitespace
'Vehicle'     Name.Class
'('           Punctuation
'val'         Keyword.Declaration
' '           Text.Whitespace
'numberOfWheels' Name
':'           Punctuation
' '           Text.Whitespace
'Int'         Name.Class
')'           Punctuation
':'           Punctuation
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Unicycle'    Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Vehicle'     Name.Class
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Bicycle'     Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Vehicle'     Name.Class
'('           Punctuation
'2'           Literal.Number.Integer
')'           Punctuation
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'Car'         Name.Class
' '           Text.Whitespace
'extends'     Keyword
' '           Text.Whitespace
'Vehicle'     Name.Class
'('           Punctuation
'4'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace
