diff --git a/Text/Yaml/Reference.bnf b/Text/Yaml/Reference.bnf
--- a/Text/Yaml/Reference.bnf
+++ b/Text/Yaml/Reference.bnf
@@ -1,692 +1,720 @@
--- ** Spec productions
---
--- These are copied directly from the spec, with the addition of the occasional
--- decision point and commitment.
-
-c_printable = '\x9'
-            / '\xA'
-            / '\xD'
-            / ('\x20', '\x7E')
-            / '\x85'
-            / ('\xA0', '\xD7FF')
-            / ('\xE000', '\xFFFD')
-            / ('\x10000', '\x10FFFF')
-
-c_byte_order_mark = '\xFEFF' & detect_utf_encoding
-
--- Indicators:
-
-c_sequence_entry = indicator '-'
-c_mapping_key    = indicator '?'
-c_mapping_value  = indicator ':'
-c_collect_entry  = indicator ','
-c_sequence_start = indicator '['
-c_sequence_end   = indicator ']'
-c_mapping_start  = indicator '{'
-c_mapping_end    = indicator '}'
-c_comment        = indicator '#'
-c_anchor         = indicator '&'
-c_alias          = indicator '*'
-c_tag            = indicator '!'
-c_literal        = indicator '|'
-c_folded         = indicator '>'
-c_single_quote   = indicator '\''
-c_double_quote   = indicator '"'
-c_directive      = indicator '%'
-c_reserved       = indicator ( '@' /  '`' )
-
-c_indicator = c_sequence_entry
-            / c_mapping_key
-            / c_mapping_value
-            / c_collect_entry
-            / c_sequence_start
-            / c_sequence_end
-            / c_mapping_start
-            / c_mapping_end
-            / c_comment
-            / c_anchor
-            / c_alias
-            / c_tag
-            / c_literal
-            / c_folded
-            / c_single_quote
-            / c_double_quote
-            / c_directive
-            / c_reserved
-
-c_flow_indicator = c_collect_entry
-                 / c_sequence_start / c_sequence_end
-                 / c_mapping_start  / c_mapping_end
-
--- Line breaks:
-
-b_line_feed           = '\xA'
-b_carriage_return     = '\xD'
-b_next_line           = '\x85'
-b_line_separator      = '\x2028'
-b_paragraph_separator = '\x2029'
-
-b_char = b_line_feed
-       / b_carriage_return
-       / b_next_line
-       / b_line_separator
-       / b_paragraph_separator
-
-b_specific = ( b_line_separator / b_paragraph_separator )
-           & nextLine
-
-b_generic = ( b_carriage_return & b_line_feed
-            / b_carriage_return
-            / b_line_feed
-            / b_next_line )
-          & nextLine
-
-b_as_line_feed    = token LineFeed b_generic
-b_normalized      = b_as_line_feed / token Break b_specific
-b_ignored_generic = token Continue b_generic
-b_ignored_any     = b_ignored_generic / token Continue b_specific
-
--- Chars:
-
-nb_char = c_printable - b_char
-s_space = '\x20'
-s_tab   = '\x9'
-s_white = s_space / s_tab
-ns_char = nb_char - s_white
-
-ns_dec_digit    = ('\x30', '\x39')
-ns_hex_digit    = ns_dec_digit / ('\x41', '\x46') / ('\x61', '\x66')
-ns_ascii_letter = ('\x41', '\x5A') / ('\x61', '\x7A')
-ns_word_char    = ns_dec_digit / ns_ascii_letter / '-'
-
-ns_uri_char = "escape"
-            ^ ( ns_word_char
-              / '%' ! "escape" & ns_hex_digit & ns_hex_digit
-              / ';' / '/' / '?' / ':' / '@' / '&'  / '=' / '+' / '$' / ','
-              / '_' / '.' / '!' / '~' / '*' / '\'' / '(' / ')' / '[' / ']' )
-ns_tag_char = ns_uri_char - c_tag
-
--- Escape:
-
-c_escape = indicator '\\'
-
-ns_esc_null                = meta '0'
-ns_esc_bell                = meta 'a'
-ns_esc_backspace           = meta 'b'
-ns_esc_horizontal_tab      = meta ( 't' / '\x9' )
-ns_esc_line_feed           = meta 'n'
-ns_esc_vertical_tab        = meta 'v'
-ns_esc_form_feed           = meta 'f'
-ns_esc_carriage_return     = meta 'r'
-ns_esc_escape              = meta 'e'
-ns_esc_space               = meta '\x20'
-ns_esc_double_quote        = meta '"'
-ns_esc_backslash           = meta '\\'
-ns_esc_next_line           = meta 'N'
-ns_esc_non_breaking_space  = meta '_'
-ns_esc_line_separator      = meta 'L'
-ns_esc_paragraph_separator = meta 'P'
-ns_esc_8_bit               = indicator 'x' ! "escaped" & meta ( ns_hex_digit % 2 )
-ns_esc_16_bit              = indicator 'u' ! "escaped" & meta ( ns_hex_digit % 4 )
-ns_esc_32_bit              = indicator 'U' ! "escaped" & meta ( ns_hex_digit % 8 )
-
-ns_esc_char = nest BeginEscape
-            & c_escape ! "escape"
-            & "escaped"
-            ^ ( ns_esc_null
-              / ns_esc_bell
-              / ns_esc_backspace
-              / ns_esc_horizontal_tab
-              / ns_esc_line_feed
-              / ns_esc_vertical_tab
-              / ns_esc_form_feed
-              / ns_esc_carriage_return
-              / ns_esc_escape
-              / ns_esc_space
-              / ns_esc_double_quote
-              / ns_esc_backslash
-              / ns_esc_next_line
-              / ns_esc_non_breaking_space
-              / ns_esc_line_separator
-              / ns_esc_paragraph_separator
-              / ns_esc_8_bit
-              / ns_esc_16_bit
-              / ns_esc_32_bit )
-            & nest EndEscape
-
--- Spaces:
-
-s_indent    n      = token Indent ( s_space % n )
-s_indent_lt n      = token Indent ( s_space <% n )
-s_indent_le n      = token Indent ( s_space <% (n .+ 1) )
-s_separate_in_line = token White ( s_white +) / sol
-
--- Empty lines
-
-s_ignored_prefix n s = case s of
-                            Plain   -> s_ignored_prefix_flow n
-                            Double  -> s_ignored_prefix_flow n
-                            Single  -> s_ignored_prefix_flow n
-                            Literal -> s_ignored_prefix_block n
-                            Folded  -> s_ignored_prefix_block n
-
-s_ignored_prefix_flow  n = s_indent n & ( s_separate_in_line ?)
-s_ignored_prefix_block n = s_indent n
-
-l_empty n s = ( s_ignored_prefix n s / s_indent_lt n ) & b_normalized
-
--- Comments:
-
-c_nb_comment_text = nest BeginComment
-                  & c_comment & meta ( nb_char *)
-                  & nest EndComment
-
-s_b_comment  = ( s_separate_in_line & ( c_nb_comment_text ?) ?) & b_ignored_any
-s_l_comments = ( s_b_comment / sol ) & ( l_comment *)
-l_comment    = s_separate_in_line & ( c_nb_comment_text ?) & b_ignored_any
-
--- Separation:
-
-s_separate n c = case c of
-                      BlockIn  -> s_separate_in_line
-                      BlockOut -> s_separate_in_line
-                      FlowOut  -> s_separate_lines n
-                      FlowIn   -> s_separate_lines n
-                      FlowKey  -> s_separate_in_line
-
-s_separate_lines n = s_l_comments & s_ignored_prefix_flow n
-                   / s_separate_in_line
-
--- Folding:
-
-b_l_folded_specific n s = token Break b_specific & ( l_empty n s *)
-b_l_folded_as_space     = token LineFold b_generic
-b_l_folded_trimmed  n s = b_ignored_generic & ( l_empty n s +)
-b_l_folded_any      n s = b_l_folded_specific n s / b_l_folded_trimmed n s / b_l_folded_as_space
-s_l_flow_folded     n   = ( s_separate_in_line ?) & b_l_folded_any n Plain
-
--- Directives:
-
-l_directive = nest BeginDirective
-            & c_directive
-            & "directive" ^ ( ns_yaml_directive / ns_tag_directive / ns_reserved_directive )
-            & nest EndDirective
-            & s_l_comments
-
-ns_reserved_directive  = ns_directive_name & ( s_separate_in_line & ns_directive_parameter *)
-ns_directive_name      = meta ( ns_char +)
-ns_directive_parameter = meta ( ns_char +)
-
--- Yaml directive:
-
-ns_yaml_directive = meta [ 'Y', 'A', 'M', 'L' ] ! "directive"
-                  & s_separate_in_line & ns_yaml_version
-ns_yaml_version   = meta ( ( ns_dec_digit +) & '.' & ( ns_dec_digit +) )
-
--- Tag directive:
-
-ns_tag_directive = meta [ 'T', 'A', 'G' ] ! "directive"
-                 & s_separate_in_line & c_tag_handle
-                 & s_separate_in_line & ns_tag_prefix
-
-c_tag_handle = c_named_tag_handle
-             / c_secondary_tag_handle
-             / c_primary_tag_handle
-
-c_primary_tag_handle   = nest BeginHandle
-                       & c_tag
-                       & nest EndHandle
-c_secondary_tag_handle = nest BeginHandle
-                       & c_tag & c_tag
-                       & nest EndHandle
-c_named_tag_handle     = nest BeginHandle
-                       & c_tag & meta ( ns_word_char +) & c_tag
-                       & nest EndHandle
-
-ns_tag_prefix = nest BeginTag
-              & ( c_ns_local_tag_prefix / ns_global_tag_prefix )
-              & nest EndTag
-
-c_ns_local_tag_prefix = c_tag & meta ( ns_uri_char *)
-ns_global_tag_prefix  = meta ( ns_tag_char & ( ns_uri_char *) )
-
--- Properties:
-
-c_ns_properties n c = nest BeginProperties
-                    & ( ( c_ns_anchor_property & ( s_separate n c & c_ns_tag_property ?) )
-                      / ( c_ns_tag_property & ( s_separate n c & c_ns_anchor_property ?) ) )
-                    & nest EndProperties
-c_ns_property   = c_ns_anchor_property / c_ns_tag_property
-
--- Tag:
-
-c_ns_tag_property = nest BeginTag
-                  & ( c_verbatim_tag / c_ns_shorthand_tag / c_non_specific_tag )
-                  & nest EndTag
-
-c_verbatim_tag     = c_tag & indicator '<' & meta ( ns_uri_char +) & indicator '>'
-c_ns_shorthand_tag = c_named_tag_handle & meta ( ns_uri_char +)
-                   / c_secondary_tag_handle & meta ( ns_uri_char +)
-                   / c_primary_tag_handle & meta ( ns_tag_char +)
-c_non_specific_tag = c_tag
-
--- Anchor:
-
-c_ns_anchor_property = nest BeginAnchor
-                     & c_anchor & ns_anchor_name
-                     & nest EndAnchor
-
-ns_anchor_char = ns_char - c_flow_indicator
-ns_anchor_name = meta ( ns_anchor_char +)
-
--- Double:
-
-nb_double_char = "escape" ^ ( ns_esc_char / nb_char - c_escape - c_double_quote )
-ns_double_char = nb_double_char - s_white
-
-c_double_quoted n c = nest BeginScalar
-                    & c_double_quote ! "node" & text ( nb_double_text n c ) & c_double_quote
-                    & nest EndScalar
-
-nb_double_text n c = case c of
-                          FlowOut -> s_double_multi n
-                          FlowIn  -> s_double_multi n
-                          FlowKey -> ( nb_double_char *)
-
-s_double_multi   n = ( s_ns_double_chars *)
-                   & ( s_ns_double_next n *)
-                   & ( s_white *)
-s_ns_double_chars  = ( s_white *) & ns_double_char
-s_ns_double_next n = s_l_double_any n
-                   & s_ignored_prefix n Double
-                   & ( ns_double_char & ( s_ns_double_chars *) ?)
-s_l_double_any   n = "escape" ^ ( s_b_double_escaped / s_l_flow_folded n )
-s_b_double_escaped = ( s_white *)
-                   & nest BeginEscape
-                   & c_escape ! "escape"
-                   & b_ignored_any
-                   & nest EndEscape
-
--- Single:
-
-c_quoted_quote = nest BeginEscape
-               & c_single_quote ! "escape" & meta '\''
-               & nest EndEscape
-nb_single_char = "escape" ^ ( c_quoted_quote / nb_char - c_single_quote )
-ns_single_char = nb_single_char - s_white
-
-c_single_quoted n c = nest BeginScalar
-                    & c_single_quote & text ( nb_single_text n c ) & c_single_quote
-                    & nest EndScalar
-
-nb_single_text n c = case c of
-                          FlowOut -> s_single_multi n
-                          FlowIn  -> s_single_multi n
-                          FlowKey -> ( nb_single_char *)
-
-s_ns_single_chars  = ( s_white *) & ns_single_char
-s_single_multi   n = ( s_ns_single_chars *)
-                   & ( s_ns_single_next n *)
-                   & ( s_white *)
-s_ns_single_next n = s_l_flow_folded n
-                   & s_ignored_prefix n Double
-                   & ( ns_single_char & ( s_ns_single_chars *) ?)
-
--- Plain:
-
-ns_plain_safe c = case c of
-                       FlowOut -> ns_plain_safe_out
-                       FlowIn  -> ns_plain_safe_in
-                       FlowKey -> ns_plain_safe_in
-
-ns_plain_safe_out = ns_char - c_mapping_value - c_comment
-ns_plain_safe_in  = ns_plain_safe_out - c_flow_indicator
-ns_plain_char c   = ( ':' +) & ( '#' / ns_plain_safe c ) & ( '#' *)
-                  / ns_plain_safe c & ( '#' *)
-nb_plain_char c   = s_white / ns_plain_char c
-ns_plain_first c  = ( '-' / '?' / ':' ) & ( ( '#' +) / ns_plain_char c )
-                  / ns_plain_char c - c_indicator
-
-ns_plain n c = nest BeginScalar
-             & text (case c of
-                          FlowOut -> ns_plain_multi n c
-                          FlowIn  -> ns_plain_multi n c
-                          FlowKey -> ns_plain_single c)
-             & nest EndScalar
-
-ns_plain_single   c = ns_plain_first c ! "node" & ( s_ns_plain_chars c *)
-s_ns_plain_chars  c = ( s_white *) & ns_plain_char c
-ns_plain_multi  n c = ns_plain_single c & ( s_ns_plain_next n c *)
-s_ns_plain_next n c = s_l_flow_folded n
-                    & s_ignored_prefix n Plain
-                    & ns_plain_char c
-                    & ( s_ns_plain_chars c *)
-
--- Flow collection:
-
-in_flow c = case c of
-                 FlowOut -> FlowIn
-                 FlowIn  -> FlowIn
-                 FlowKey -> FlowKey
-
--- Flow sequence:
-
-c_flow_sequence n c = nest BeginSequence
-                    & c_sequence_start ! "node"
-                    & ( s_separate n c ?)
-                    & ( ns_s_flow_seq_entries n (in_flow c) ?)
-                    & c_sequence_end
-                    & nest EndSequence
-
-ns_s_flow_seq_entries n c = ns_flow_seq_entry n c
-                          & ( s_separate n c ?)
-                          & ( c_collect_entry
-                            & ( s_separate n c ?)
-                            & ( ns_s_flow_seq_entries n c ?) ?)
-
-ns_flow_seq_entry n c = "pair" ^ ( ns_flow_pair n c / "node" ^ ns_flow_node n c )
-
--- Flow mapping:
-
-c_flow_mapping n c = nest BeginMapping
-                   & c_mapping_start ! "node"
-                   & ( s_separate n c ?)
-                   & ( ns_s_flow_map_entries n (in_flow c) ?)
-                   & c_mapping_end
-                   & nest EndMapping
-
-ns_s_flow_map_entries n c = ns_flow_map_entry n c
-                          & ( s_separate n c ?)
-                          & ( c_collect_entry
-                            & ( s_separate n c ?)
-                            & ( ns_s_flow_map_entries n c ?) ?)
-ns_flow_map_entry   n c = nest BeginPair
-                            & "key"
-                            ^ ( c_mapping_key ! "key" & s_separate n c & ns_flow_map_explicit_entry n c
-                              / ns_flow_map_implicit_entry n c )
-                            & nest EndPair
-
-ns_flow_map_explicit_entry n c = ns_flow_map_implicit_entry n c
-                               / e_node & e_node
-ns_flow_map_implicit_entry n c = "pair"
-                               ^ ( c_ns_flow_map_json_key_entry n c
-                                 / ns_flow_map_yaml_key_entry n c
-                                 / ns_flow_map_empty_key_entry n c )
-
-c_ns_flow_map_json_key_entry n c = ( "node" ^ c_flow_json_node n c ) ! "pair"
-                                 & ( ( s_separate n c ?) & c_ns_flow_map_adjacent_value n c
-                                   / e_node )
-ns_flow_map_yaml_key_entry   n c = ( "node" ^ ns_flow_yaml_node n c ) ! "pair"
-                                 & ( ( s_separate n c ?) & c_ns_flow_map_separate_value n c
-                                   / e_node )
-ns_flow_map_empty_key_entry  n c = e_node & c_ns_flow_map_separate_value n c
-
-c_ns_flow_map_separate_value n c = c_mapping_value ! "pair"
-                                 & ( s_separate n c & ns_flow_node n c
-                                   / e_node )
-c_ns_flow_map_adjacent_value n c = c_mapping_value ! "pair"
-                                 & ( ( s_separate n c ?) & ns_flow_node n c
-                                   / e_node )
-
-ns_flow_pair n c = nest BeginMapping
-                 & nest BeginPair
-                 & ( c_mapping_key ! "pair" & s_separate n c & ns_flow_map_explicit_entry n c
-                   / ns_flow_pair_entry n c )
-                 & nest EndPair
-                 & nest EndMapping
-ns_flow_pair_entry n c = "entry"
-                       ^ ( c_ns_flow_pair_json_key_entry n c
-                         / ns_flow_pair_yaml_key_entry n c
-                         / ns_flow_map_empty_key_entry n c )
-c_ns_flow_pair_json_key_entry n c = c_s_implicit_json_key  & c_ns_flow_map_adjacent_value n c
-ns_flow_pair_yaml_key_entry   n c = ns_s_implicit_yaml_key & c_ns_flow_map_separate_value n c
-
-c_s_implicit_json_key  = ( "node" ^ ( c_flow_json_node  na FlowKey ) & ( s_separate_in_line ?) ) `limitedTo` 1024
-ns_s_implicit_yaml_key = ( "node" ^ ( ns_flow_yaml_node na FlowKey ) & ( s_separate_in_line ?) ) `limitedTo` 1024
-
--- Alias:
-
-c_ns_alias = nest BeginAlias
-           & c_alias ! "node" & ns_anchor_name
-           & nest EndAlias
-
--- Empty:
-
-e_scalar = nest BeginScalar & nest EndScalar
-e_node   = nest BeginNode & e_scalar & nest EndNode
-
--- Flow node:
-
-ns_flow_content      n c = c_flow_json_content n c
-                         / ns_flow_yaml_content n c
-c_flow_json_content  n c = c_flow_sequence n c
-                         / c_flow_mapping n c
-                         / c_single_quoted n c
-                         / c_double_quoted n c
-ns_flow_yaml_content n c = ns_plain n c
-
-c_flow_json_node   n c = nest BeginNode
-                       & ( c_ns_properties n c & s_separate n c ?)
-                       & c_flow_json_content n c
-                       & nest EndNode
-ns_flow_yaml_node  n c = nest BeginNode
-                       & ( c_ns_alias
-                         / ( c_ns_properties n c
-                           & ( s_separate n c & ns_flow_yaml_content n c
-                             / e_scalar ) )
-                         / ns_flow_yaml_content n c )
-                       & nest EndNode
-ns_flow_node       n c = nest BeginNode
-                       & ( c_ns_alias
-                         / ( c_ns_properties n c
-                           & ( s_separate n c & ns_flow_content n c
-                             / e_scalar ) )
-                         / ns_flow_content n c )
-                       & nest EndNode
-
--- Block scalar:
-
-c_indentation_indicator n = indicator ( ns_dec_digit - '0' ) & asInteger
-                          / detect_scalar_indentation n
-
-detect_scalar_indentation n = peek $ ( nb_char *)
-                                   & ( b_ignored_any & ( l_empty n Literal *) ?)
-                                   & count_spaces (-n)
-
-count_spaces n  = (s_space & count_spaces (n .+ 1))
-                / result (max 1 n)
-
-c_style_indicator s = case s of
-                           Literal -> indicator '|'
-                           Folded  -> indicator '>'
-
-c_chomping_indicator = indicator '-' & result Strip
-                     / indicator '+' ! "header" & result Keep
-                     / result Clip
-
-c_b__block_header n s = c_style_indicator s ! "node"
-                      & "header"
-                      ^ ( do t <- c_chomping_indicator
-                             m <- c_indentation_indicator n
-                             ( s_white / b_char ) ?! "header"
-                             s_b_comment
-                             result (m, t)
-                        / do m <- c_indentation_indicator n
-                             t <- c_chomping_indicator
-                             s_b_comment
-                             result (m, t) )
-
--- Chomping:
-
-b_chomped_last t = case t of
-                        Strip -> nest EndScalar & b_ignored_any
-                        Clip  -> b_normalized & nest EndScalar
-                        Keep  -> b_normalized
-
-l_chomped_empty n t = case t of
-                           Strip -> l_strip_empty n
-                           Clip  -> l_strip_empty n
-                           Keep  -> l_keep_empty n
-
-l_strip_empty n = ( s_indent_le n & b_ignored_any *)
-                & ( l_trail_comments n ?)
-l_keep_empty  n = ( s_indent_le n & b_normalized *)
-                & nest EndScalar
-                & ( l_trail_comments n ?)
-
-l_trail_comments n = s_indent_lt n & c_nb_comment_text & b_ignored_any
-                   & ( l_comment *)
-
--- Literal:
-
-c_l__literal n = do nest BeginScalar
-                    (m, t) <- c_b__block_header n Literal
-                    text ( l_literal_content (n .+ m) t )
-
-l_nb_literal_chars n   = ( l_empty n Literal *) & s_indent n & ( nb_char +)
-b_l_literal_next   n   = b_normalized & l_nb_literal_chars n
-l_literal_content  n t = ( l_nb_literal_chars n & ( b_l_literal_next n *) & b_chomped_last t ?)
-                       & l_chomped_empty n t
-
--- Folded:
-
-c_l__folded n = do nest BeginScalar
-                   (m, t) <- c_b__block_header n Folded
-                   text ( l_folded_content (n .+ m) t )
-
-s_nb_folded_text  n = s_indent n & ns_char ! "fold" & ( nb_char *)
-l_nb_folded_lines n = s_nb_folded_text n
-                    & ( b_l_folded_any n Folded & s_nb_folded_text n *)
-
-l_nb_start_with_folded n = ( l_empty n Folded *)
-                         & l_nb_folded_lines n
-                         & ( b_normalized & l_nb_start_with_spaced n ?)
-
-s_nb_spaced_text  n = s_indent n & s_white ! "fold" & ( nb_char *)
-b_l_spaced        n = b_normalized & ( l_empty n Folded *)
-l_nb_spaced_lines n = s_nb_spaced_text n
-                    & ( b_l_spaced n & s_nb_spaced_text n *)
-
-l_nb_start_with_spaced n = ( l_empty n Folded *)
-                         & l_nb_spaced_lines n
-                         & ( b_normalized & l_nb_start_with_folded n ?)
-
-l_nb_start_with_any n   = "fold" ^ ( l_nb_start_with_folded n / l_nb_start_with_spaced n )
-l_folded_content    n t = ( l_nb_start_with_any n & b_chomped_last t ?)
-                        & l_chomped_empty n t
-
--- Block sequence:
-
-seq_spaces n c = case c of
-                      BlockOut -> n
-                      BlockIn  -> n .- 1
-
-l__block_sequence n = do m  <- detect_collection_indentation n
-                         (   nest BeginSequence
-                           & ( s_indent (n .+ m) & c_l_block_seq_entry (n .+ m) +)
-                           & nest EndSequence )
-
-detect_collection_indentation n = peek $ ( l_comment* ) & count_spaces (-n)
-
-c_l_block_seq_entry n = c_sequence_entry ! "node" & s_l__block_indented n BlockOut
-
-s_l__block_indented n c = do m <- detect_inline_indentation
-                             (   s_indent m
-                               & "node"
-                               ^ ( ns_l_in_line_sequence (n .+ 1 .+ m)
-                                 / ns_l_in_line_mapping (n .+ 1 .+ m) ) )
-                        / s_l__block_node n c
-                        / e_node & s_l_comments
-
-detect_inline_indentation = peek $ count_spaces 0
-
-ns_l_in_line_sequence n = nest BeginNode
-                        & nest BeginSequence
-                        & c_l_block_seq_entry n
-                        & ( s_indent n & c_l_block_seq_entry n *)
-                        & nest EndSequence
-                        & nest EndNode
-
--- Block mapping:
-
-l__block_mapping n = do m <- detect_collection_indentation n
-                        (   nest BeginMapping
-                          & ( s_indent (n .+ m) & ns_l_block_map_entry (n .+ m) +)
-                          & nest EndMapping )
-
-ns_l_block_map_entry n = nest BeginPair
-                       & ( c_l_block_map_explicit_entry n
-                         / ns_l_block_map_implicit_entry n )
-                       & nest EndPair
-
-c_l_block_map_explicit_entry n = c_l_block_map_explicit_key n
-                               & ( l_block_map_explicit_value n / e_node )
-c_l_block_map_explicit_key   n = c_mapping_key ! "node" & s_l__block_indented n BlockIn
-l_block_map_explicit_value   n = s_indent n & c_mapping_value & s_l__block_indented n BlockIn
-
-ns_l_block_map_implicit_entry n = ns_s_block_map_implicit_key & c_l_block_map_implicit_value n
-                                / e_node & c_l_block_map_implicit_value n
-ns_s_block_map_implicit_key     = c_s_implicit_json_key / ns_s_implicit_yaml_key
-c_l_block_map_implicit_value n  = c_mapping_value ! "node"
-                                & ( s_l__block_node n BlockIn
-                                  / e_node & s_l_comments )
-
-ns_l_in_line_mapping n = nest BeginNode
-                       & nest BeginMapping
-                       & ns_l_block_map_entry n
-                       & ( s_indent n & ns_l_block_map_entry n *)
-                       & nest EndMapping
-                       & nest EndNode
-
--- Block node:
-
-s_l__block_node     n c = s_l__block_in_block n c
-                        / s_l__flow_in_block n
-s_l__flow_in_block  n   = s_separate (n .+ 1) FlowOut & ns_flow_node (n .+ 1) FlowOut & s_l_comments
-s_l__block_in_block n c = nest BeginNode
-                        & ( s_l__block_scalar n c / s_l__block_collection n c )
-                        & nest EndNode
-
-s_l__block_scalar     n c = s_separate n c & ( c_ns_properties n c & s_separate n c ?)
-                          & ( c_l__literal n / c_l__folded n )
-s_l__block_collection n c = ( s_separate n c & c_ns_properties n c & s_l_comments / s_l_comments )
-                          & ( l__block_sequence (seq_spaces n c) / l__block_mapping n )
-
--- Document:
-
-c_document_start  = token DocumentStart [ '-', '-', '-' ]
-
-c_document_end    = token DocumentEnd [ '.', '.', '.' ]
-
-l_document_prefix = ( c_byte_order_mark ?) & ( l_comment *)
-
-l_document_suffix = c_document_end & s_l_comments
-
-l_forbidden = sol
-            & ( c_document_start / c_document_end )
-            & ( b_char / s_white / eof )
-
-l_implicit_document = nest BeginDocument
-                    & s_l__block_node (-1) BlockOut `forbidding` l_forbidden
-                    & nest EndDocument
-
-l_explicit_document =  nest BeginDocument
-                    & ( l_directive ! "doc" *)
-                    & c_document_start ! "doc"
-                    & "node" ^ ( l_implicit_document / e_node & s_l_comments )
-                    & nest EndDocument
-
-e_no_document = empty
-
--- Stream:
-
-l_yaml_stream = nest BeginStream
-              & l_documents
-              & ( l_document_suffix & l_documents *)
-              & nest EndStream
-
-l_documents = l_leading_document & ( l_following_document *)
-
-l_leading_document = l_document_prefix & "doc" ^ ( l_explicit_document / "node" ^ ( l_implicit_document / e_no_document ) )
-
-l_following_document = l_document_prefix & "doc" ^ ( l_explicit_document / e_no_document )
+-- ** Spec productions!
+--
+-- These are copied directly from the spec, with the sprinkling of
+-- additional token and decision point directives.
+
+-- 5.1 Character Set
+
+c_printable {- 1 -} = '\x9' / '\xA' / '\xD' / ('\x20', '\x7E')
+                      / '\x85' / ('\xA0', '\xD7FF') / ('\xE000', '\xFFFD')
+                      / ('\x10000', '\x10FFFF')
+
+-- 5.2 Character Encodings
+
+c_byte_order_mark {- 2 -} = '\xFEFF' & detect_utf_encoding
+
+-- 5.3 Indicator Characters
+
+c_sequence_entry {-  3 -} = indicator '-'
+c_mapping_key    {-  4 -} = indicator '?'
+c_mapping_value  {-  5 -} = indicator ':'
+
+c_collect_entry  {-  6 -} = indicator ','
+c_sequence_start {-  7 -} = indicator '['
+c_sequence_end   {-  8 -} = indicator ']'
+c_mapping_start  {-  9 -} = indicator '{'
+c_mapping_end    {- 10 -} = indicator '}'
+
+c_comment        {- 11 -} = indicator '#'
+
+c_anchor         {- 12 -} = indicator '&'
+c_alias          {- 13 -} = indicator '*'
+c_tag            {- 14 -} = indicator '!'
+
+c_literal        {- 15 -} = indicator '|'
+c_folded         {- 16 -} = indicator '>'
+
+c_single_quote   {- 17 -} = indicator '\''
+c_double_quote   {- 18 -} = indicator '"'
+
+c_directive      {- 19 -} = indicator '%'
+
+c_reserved       {- 20 -} = indicator ( '@' /  '`' )
+
+c_indicator {- 21 -} = c_sequence_entry / c_mapping_key / c_mapping_value / c_collect_entry
+                     / c_sequence_start / c_sequence_end / c_mapping_start / c_mapping_end
+                     / c_comment / c_anchor / c_alias / c_tag
+                     / c_literal / c_folded / c_single_quote / c_double_quote
+                     / c_directive / c_reserved
+
+-- 5.4 Line Break Characters
+
+b_line_feed           {- 22 -} = '\xA'
+b_carriage_return     {- 23 -} = '\xD'
+b_next_line           {- 24 -} = '\x85'
+b_line_separator      {- 25 -} = '\x2028'
+b_paragraph_separator {- 26 -} = '\x2029'
+
+b_char {- 27 -} = b_line_feed / b_carriage_return / b_next_line
+                / b_line_separator / b_paragraph_separator
+
+nb_char {- 28 -} = c_printable - b_char
+
+b_specific {- 29 -} = ( b_line_separator / b_paragraph_separator )
+                    & nextLine
+
+b_generic {- 30 -} = ( b_carriage_return & b_line_feed
+                     / b_carriage_return
+                     / b_line_feed
+                     / b_next_line )
+                   & nextLine
+
+b_as_line_feed {- 31 -} = token LineFeed b_generic
+b_normalized   {- 32 -} = b_as_line_feed / token Break b_specific
+
+b_non_content_generic {- 33 -} = token Continue b_generic
+
+b_non_content_any {- 34 -} = b_non_content_generic / token Continue b_specific
+
+-- 5.5 White Space Characters
+
+s_space {- 35 -} = '\x20'
+s_tab   {- 36 -} = '\x9'
+s_white {- 37 -} = s_space / s_tab
+
+ns_char {- 38 -} = nb_char - s_white
+
+-- 5.6 Miscellaneous Characters
+
+ns_dec_digit {- 39 -} = ('\x30', '\x39')
+
+ns_hex_digit {- 40 -} = ns_dec_digit
+                      / ('\x41', '\x46') / ('\x61', '\x66')
+
+ns_ascii_letter {- 41 -} = ('\x41', '\x5A') / ('\x61', '\x7A')
+
+ns_word_char {- 42 -} = ns_dec_digit / ns_ascii_letter / '-'
+
+ns_uri_char {- 43 -} = "escape"
+                     ^ ( ns_word_char
+                       / '%' ! "escape" & ns_hex_digit & ns_hex_digit
+                       / ';' / '/' / '?' / ':' / '@' / '&'  / '=' / '+' / '$' / ','
+                       / '_' / '.' / '!' / '~' / '*' / '\'' / '(' / ')' / '[' / ']' )
+
+ns_tag_char {- 44 -} = ns_uri_char - c_tag
+
+-- 5.7 Escaped Characters
+
+c_escape {- 45 -} = indicator '\\'
+
+ns_esc_null                {- 46 -} = meta '0'
+ns_esc_bell                {- 47 -} = meta 'a'
+ns_esc_backspace           {- 48 -} = meta 'b'
+ns_esc_horizontal_tab      {- 49 -} = meta ( 't' / '\x9' )
+ns_esc_line_feed           {- 50 -} = meta 'n'
+ns_esc_vertical_tab        {- 51 -} = meta 'v'
+ns_esc_form_feed           {- 52 -} = meta 'f'
+ns_esc_carriage_return     {- 53 -} = meta 'r'
+ns_esc_escape              {- 54 -} = meta 'e'
+ns_esc_space               {- 55 -} = meta '\x20'
+ns_esc_double_quote        {- 56 -} = meta '"'
+ns_esc_backslash           {- 57 -} = meta '\\'
+ns_esc_next_line           {- 58 -} = meta 'N'
+ns_esc_non_breaking_space  {- 59 -} = meta '_'
+ns_esc_line_separator      {- 60 -} = meta 'L'
+ns_esc_paragraph_separator {- 61 -} = meta 'P'
+ns_esc_8_bit               {- 62 -} = indicator 'x' ! "escaped" & meta ( ns_hex_digit % 2 )
+ns_esc_16_bit              {- 63 -} = indicator 'u' ! "escaped" & meta ( ns_hex_digit % 4 )
+ns_esc_32_bit              {- 64 -} = indicator 'U' ! "escaped" & meta ( ns_hex_digit % 8 )
+
+c_ns_esc_char {- 65 -} = nest BeginEscape
+              & c_escape ! "escape"
+              & "escaped"
+              ^ ( ns_esc_null
+                / ns_esc_bell
+                / ns_esc_backspace
+                / ns_esc_horizontal_tab
+                / ns_esc_line_feed
+                / ns_esc_vertical_tab
+                / ns_esc_form_feed
+                / ns_esc_carriage_return
+                / ns_esc_escape
+                / ns_esc_space
+                / ns_esc_double_quote
+                / ns_esc_backslash
+                / ns_esc_next_line
+                / ns_esc_non_breaking_space
+                / ns_esc_line_separator
+                / ns_esc_paragraph_separator
+                / ns_esc_8_bit
+                / ns_esc_16_bit
+                / ns_esc_32_bit )
+              & nest EndEscape
+
+-- 6.1 Indentation Spaces
+
+s_indent    n {- 66 -} = token Indent ( s_space % n )
+
+s_indent_lt n {- 67 -} = token Indent ( s_space <% n )
+s_indent_le n {- 68 -} = token Indent ( s_space <% (n .+ 1) )
+
+-- 6.2 Separation Spaces
+
+s_separate_in_line {- 69 -} = token White ( s_white +) / sol
+
+-- 6.3 Line Prefixes
+
+s_line_prefix n c {- 70 -} = case c of
+                                  BlockOut -> s_block_line_prefix n
+                                  BlockIn  -> s_block_line_prefix n
+                                  FlowOut  -> s_flow_line_prefix n
+                                  FlowIn   -> s_flow_line_prefix n
+
+s_block_line_prefix n {- 71 -} = s_indent n
+s_flow_line_prefix  n {- 72 -} = s_indent n & ( s_separate_in_line ?)
+
+-- 6.4 Empty Lines
+
+l_empty n c {- 73 -} = ( s_line_prefix n c / s_indent_lt n )
+                     & b_normalized
+
+-- 6.5 Comments
+
+c_nb_comment_text {- 74 -} = nest BeginComment
+                           & c_comment & meta ( nb_char *)
+                           & nest EndComment
+
+s_b_comment {- 75 -} = ( s_separate_in_line & ( c_nb_comment_text ?) ?)
+                     & b_non_content_any
+
+l_comment {- 76 -} = s_separate_in_line & ( c_nb_comment_text ?) & b_non_content_any
+
+s_l_comments {- 77 -} = ( s_b_comment / sol )
+                      & ( l_comment *)
+
+-- 6.6 Separation Lines
+
+s_separate n c      {- 78 -} = case c of
+                                    BlockOut -> s_separate_lines n
+                                    BlockIn  -> s_separate_lines n
+                                    FlowOut  -> s_separate_lines n
+                                    FlowIn   -> s_separate_lines n
+                                    FlowKey  -> s_separate_in_line
+s_separate_lines n {- 79 -} = s_l_comments & s_flow_line_prefix n
+                            / s_separate_in_line
+
+-- 6.7 Line Folding
+
+b_l_folded_specific n c {- 80 -} = token Break b_specific & ( l_empty n c *)
+
+b_l_folded_trimmed  n c {- 81 -} = b_non_content_generic & ( l_empty n c +)
+
+b_l_folded_as_space {-  82 -} = token LineFold b_generic
+
+b_l_folded_any n c  {-  83 -} = b_l_folded_specific n c
+                              / b_l_folded_trimmed n c
+                              / b_l_folded_as_space
+
+s_l_flow_folded n {-  84 -} = ( s_separate_in_line ?) & b_l_folded_any n FlowIn
+
+-- 6.8 Directives
+
+l_directive {-  85 -} = nest BeginDirective
+                      & c_directive
+                      & "directive"
+                      ^ ( ns_yaml_directive
+                        / ns_tag_directive
+                        / ns_reserved_directive )
+                      & nest EndDirective
+                      & s_l_comments
+
+ns_reserved_directive  {-  86 -} = ns_directive_name
+                                 & ( s_separate_in_line & ns_directive_parameter *)
+ns_directive_name      {-  87 -} = meta ( ns_char +)
+ns_directive_parameter {-  88 -} = meta ( ns_char +)
+
+-- 6.8.1 Yaml Directives
+
+ns_yaml_directive {-  89 -} = meta [ 'Y', 'A', 'M', 'L' ] ! "directive"
+                            & s_separate_in_line & ns_yaml_version
+ns_yaml_version   {-  90 -} = meta ( ( ns_dec_digit +) & '.' & ( ns_dec_digit +) )
+
+-- 6.8.2 Tag Directives
+
+ns_tag_directive {-  91 -} = meta [ 'T', 'A', 'G' ] ! "directive"
+                           & s_separate_in_line & c_tag_handle
+                           & s_separate_in_line & ns_tag_prefix
+
+-- 6.8.2.1 Tag Handles
+
+c_tag_handle {-  92 -} = c_named_tag_handle
+                       / c_secondary_tag_handle
+                       / c_primary_tag_handle
+
+c_primary_tag_handle   {-  93 -} = nest BeginHandle
+                                 & c_tag
+                                 & nest EndHandle
+
+c_secondary_tag_handle {-  94 -} = nest BeginHandle
+                                 & c_tag & c_tag
+                                 & nest EndHandle
+
+c_named_tag_handle     {-  95 -} = nest BeginHandle
+                                 & c_tag & meta ( ns_word_char +) & c_tag
+                                 & nest EndHandle
+
+-- 6.8.2.2 Tag Prefixes
+
+ns_tag_prefix {-  96 -} = nest BeginTag
+                        & ( c_ns_local_tag_prefix / ns_global_tag_prefix )
+                        & nest EndTag
+
+c_ns_local_tag_prefix {-  97 -} = c_tag & meta ( ns_uri_char *)
+
+ns_global_tag_prefix  {-  98 -} = meta ( ns_tag_char & ( ns_uri_char *) )
+
+-- 6.9 Node Properties
+
+c_ns_properties n c {-  99 -} = nest BeginProperties
+                              & ( ( c_ns_tag_property
+                                  & ( s_separate n c & c_ns_anchor_property ?) )
+                                / ( c_ns_anchor_property
+                                  & ( s_separate n c & c_ns_tag_property ?) ) )
+                              & nest EndProperties
+
+-- 6.9.1 Node Tags
+
+c_ns_tag_property {- 100 -} = nest BeginTag
+                            & ( c_verbatim_tag
+                              / c_ns_shorthand_tag
+                              / c_non_specific_tag )
+                            & nest EndTag
+
+c_verbatim_tag     {- 101 -} = c_tag & indicator '<' & meta ( ns_uri_char +) & indicator '>'
+
+c_ns_shorthand_tag {- 102 -} = c_named_tag_handle & meta ( ns_uri_char +)
+                             / c_secondary_tag_handle & meta ( ns_uri_char +)
+                             / c_primary_tag_handle & meta ( ns_tag_char +)
+
+c_non_specific_tag {- 103 -} = c_tag
+
+-- 6.9.2 Node Anchors
+
+c_ns_anchor_property {- 104 -} = nest BeginAnchor
+                               & c_anchor & ns_anchor_name
+                               & nest EndAnchor
+
+ns_anchor_char {- 105 -} = ns_char - ( c_collect_entry / c_sequence_start / c_sequence_end / c_mapping_start  / c_mapping_end )
+ns_anchor_name {- 106 -} = meta ( ns_anchor_char +)
+
+-- 7.1 Alias Nodes
+
+c_ns_alias_node {- 107 -} = nest BeginAlias
+                          & c_alias ! "node" & ns_anchor_name
+                          & nest EndAlias
+
+-- 7.2 Empty Nodes
+
+e_scalar {- 108 -} = nest BeginScalar & nest EndScalar
+
+e_node {- 109 -} = nest BeginNode & e_scalar & nest EndNode
+
+-- 7.3.1 Double Quoted Style
+
+nb_double_char {- 110 -} = "escape" ^ ( nb_char - c_escape - c_double_quote / c_ns_esc_char )
+ns_double_char {- 111 -} = nb_double_char - s_white
+
+c_double_quoted n c {- 112 -} = nest BeginScalar
+                              & c_double_quote ! "node" & text ( nb_double_text n c ) & c_double_quote
+                              & nest EndScalar
+nb_double_text n c  {- 113 -} = case c of
+                                     FlowOut -> nb_double_multi_line n
+                                     FlowIn  -> nb_double_multi_line n
+                                     FlowKey -> nb_double_one_line
+nb_double_one_line  {- 114 -} = ( nb_double_char *)
+
+s_l_double_escaped n {- 115 -} = ( s_white *)
+                               & nest BeginEscape
+                               & c_escape ! "escape" & b_non_content_any
+                               & nest EndEscape
+                               & ( l_empty n FlowIn *)
+s_l_double_any n     {- 116 -} = "escape" ^ ( s_l_double_escaped n / s_l_flow_folded n )
+
+nb_ns_double_in_line    {- 117 -} = ( ( s_white *) & ns_double_char *)
+s_ns_double_next_line n {- 118 -} = s_l_double_any n
+                                  & s_flow_line_prefix n
+                                  & ns_double_char & nb_ns_double_in_line
+nb_double_multi_line n  {- 119 -} = nb_ns_double_in_line
+                                  & ( s_ns_double_next_line n *)
+                                  & ( s_white *)
+
+-- 7.3.2 Single Quoted Style
+
+c_quoted_quote {- 120 -} = nest BeginEscape
+                         & c_single_quote ! "escape" & meta '\''
+                         & nest EndEscape
+nb_single_char {- 121 -} = "escape" ^ ( nb_char - c_single_quote / c_quoted_quote )
+ns_single_char {- 122 -} = nb_single_char - s_white
+
+c_single_quoted  n c {- 123 -}= nest BeginScalar
+                              & c_single_quote & text ( nb_single_text n c ) & c_single_quote
+                              & nest EndScalar
+nb_single_text n c {- 124 -} = case c of
+                                    FlowOut -> nb_single_multi_line n
+                                    FlowIn  -> nb_single_multi_line n
+                                    FlowKey -> nb_single_one_line
+nb_single_one_line {- 125 -} = ( nb_single_char *)
+
+nb_ns_single_in_line    {- 126 -} = ( ( s_white *) & ns_single_char *)
+s_ns_single_next_line n {- 127 -} = s_l_flow_folded n
+                                  & s_flow_line_prefix n
+                                  & ns_single_char & nb_ns_single_in_line
+nb_single_multi_line n  {- 128 -} = ( nb_ns_single_in_line *)
+                                  & ( s_ns_single_next_line n *)
+                                  & ( s_white *)
+
+-- 7.3.3 Plain Style
+
+ns_plain_first c  {- 129 -} = ns_char - c_indicator
+                            / ( ':' / '?' / '-' ) & ( ns_char >?)
+
+ns_plain_safe c   {- 130 -} = case c of
+                                   FlowOut -> ns_plain_safe_out
+                                   FlowIn  -> ns_plain_safe_in
+                                   FlowKey -> ns_plain_safe_in
+ns_plain_safe_out {- 131 -} = ns_char - c_mapping_value - c_comment
+ns_plain_safe_in   {- 132 -}= ns_plain_safe_out - ( c_collect_entry / c_sequence_start / c_sequence_end / c_mapping_start  / c_mapping_end )
+ns_plain_char c   {- 133 -} = ns_plain_safe c
+                            / ( ns_char <?) & '#'
+                            / ':' & ( ns_char >?)
+nb_plain_char c   {- 134 -} = s_white / ns_plain_char c
+
+ns_plain n c          {- 135 -} = nest BeginScalar
+                                & text (case c of
+                                              FlowOut -> ns_plain_multi_line n c
+                                              FlowIn  -> ns_plain_multi_line n c
+                                              FlowKey -> ns_plain_one_line c)
+                                & nest EndScalar
+nb_ns_plain_in_line c {- 136 -} = ( ( s_white *) & ns_plain_char c *)
+ns_plain_one_line c   {- 137 -} = ns_plain_first c ! "node" & nb_ns_plain_in_line c
+
+s_ns_plain_next_line n c {- 138 -} = s_l_flow_folded n
+                                   & s_flow_line_prefix n
+                                   & ns_plain_char c & nb_ns_plain_in_line c
+ns_plain_multi_line n c  {- 139 -} = ns_plain_one_line c & ( s_ns_plain_next_line n c *)
+
+-- 7.4 Flow Collection Styles
+
+in_flow c {- 140 -} = case c of
+                           FlowOut -> FlowIn
+                           FlowIn  -> FlowIn
+                           FlowKey -> FlowKey
+
+-- 7.4.1 Flow Sequences
+
+c_flow_sequence n c {- 141 -} = nest BeginSequence
+                              & c_sequence_start ! "node" & ( s_separate n c ?)
+                              & ( ns_s_flow_seq_entries n (in_flow c) ?) & c_sequence_end
+                              & nest EndSequence
+
+ns_s_flow_seq_entries n c {- 142 -} = ns_flow_seq_entry n c & ( s_separate n c ?)
+                                    & ( c_collect_entry & ( s_separate n c ?)
+                                      & ( ns_s_flow_seq_entries n c ?) ?)
+
+ns_flow_seq_entry n c {- 143 -} = "pair" ^ ( ns_flow_pair n c / "node" ^ ns_flow_node n c )
+
+-- 7.4.2 Flow Mappings
+
+c_flow_mapping n c        {- 144 -} = nest BeginMapping
+                                    & c_mapping_start ! "node" & ( s_separate n c ?)
+                                    & ( ns_s_flow_map_entries n (in_flow c) ?) & c_mapping_end
+                                    & nest EndMapping
+ns_s_flow_map_entries n c {- 145 -} = ns_flow_map_entry n c & ( s_separate n c ?)
+                                    & ( c_collect_entry & ( s_separate n c ?)
+                                      & ( ns_s_flow_map_entries n c ?) ?)
+
+ns_flow_map_entry n c {- 146 -}          = nest BeginPair
+                                         & "key" ^ ( c_mapping_key ! "key" & s_separate n c
+                                                   & ns_flow_map_explicit_entry n c
+                                         / ns_flow_map_implicit_entry n c )
+                                         & nest EndPair
+ns_flow_map_explicit_entry n c {- 147 -} = ns_flow_map_implicit_entry n c
+                                         / e_node
+                                         & e_node
+
+ns_flow_map_implicit_entry n c {- 148 -}    = "pair"
+                                            ^ ( ns_flow_map_yaml_key_entry n c
+                                              / c_ns_flow_map_empty_key_entry n c
+                                              / c_ns_flow_map_json_key_entry n c )
+ns_flow_map_yaml_key_entry n c {- 149 -}    = ( "node" ^ ns_flow_yaml_node n c ) ! "pair"
+                                            & (   ( s_separate n c ?)
+                                                & c_ns_flow_map_separate_value n c
+                                              / e_node )
+c_ns_flow_map_empty_key_entry n c {- 150 -} = e_node
+                                            & c_ns_flow_map_separate_value n c
+c_ns_flow_map_separate_value n c {- 151 -}  = c_mapping_value ! "pair"
+                                            & ( s_separate n c & ns_flow_node n c
+                                              / e_node )
+
+c_ns_flow_map_json_key_entry n c {- 152 -} = ( "node" ^ c_flow_json_node n c ) ! "pair"
+                                           & (   ( s_separate n c ?)
+                                               & c_ns_flow_map_adjacent_value n c
+                                             / e_node )
+c_ns_flow_map_adjacent_value n c {- 153 -} = c_mapping_value ! "pair" & (   ( s_separate n c ?)
+                                                                          & ns_flow_node n c
+                                                                        / e_node )
+
+ns_flow_pair n c {- 154 -} = nest BeginMapping
+                           & nest BeginPair
+                           & ( c_mapping_key ! "pair" & s_separate n c
+                             & ns_flow_map_explicit_entry n c
+                           / ns_flow_pair_entry n c )
+                           & nest EndPair
+                           & nest EndMapping
+
+ns_flow_pair_entry n c            {- 155 -} = "entry"
+                                            ^ ( ns_flow_pair_yaml_key_entry n c
+                                              / c_ns_flow_map_empty_key_entry n c
+                                              / c_ns_flow_pair_json_key_entry n c )
+ns_flow_pair_yaml_key_entry n c   {- 156 -} = ns_s_implicit_yaml_key
+                                            & c_ns_flow_map_separate_value n c
+c_ns_flow_pair_json_key_entry n c {- 157 -} = c_s_implicit_json_key
+                                            & c_ns_flow_map_adjacent_value n c
+ns_s_implicit_yaml_key            {- 158 -} = ( "node" ^ ( ns_flow_yaml_node na FlowKey )
+                                              & ( s_separate_in_line ?) )
+                                            `limitedTo` 1024
+c_s_implicit_json_key             {- 159 -} = ( "node" ^ ( c_flow_json_node  na FlowKey )
+                                              & ( s_separate_in_line ?) )
+                                            `limitedTo` 1024
+
+-- 7.5 Flow Nodes
+
+ns_flow_yaml_content n c {- 160 -} = ns_plain n c
+c_flow_json_content n c  {- 161 -} = c_flow_sequence n c / c_flow_mapping n c
+                                   / c_single_quoted n c / c_double_quoted n c
+ns_flow_content n c      {- 162 -} = ns_flow_yaml_content n c / c_flow_json_content n c
+
+ns_flow_yaml_node n c {- 163 -} = nest BeginNode
+                                & ( c_ns_alias_node
+                                  / ns_flow_yaml_content n c
+                                  / ( c_ns_properties n c
+                                    & ( s_separate n c & ns_flow_yaml_content n c
+                                      / e_scalar ) ) )
+                                & nest EndNode
+c_flow_json_node n c  {- 164 -} = nest BeginNode
+                                & ( c_ns_properties n c & s_separate n c ?)
+                                & c_flow_json_content n c
+                                & nest EndNode
+ns_flow_node n c      {- 165 -} = nest BeginNode
+                                & ( c_ns_alias_node
+                                  / ns_flow_content n c
+                                  / ( c_ns_properties n c
+                                    & ( s_separate n c & ns_flow_content n c
+                                      / e_scalar ) ) )
+                                & nest EndNode
+
+-- 8.1.1 Block Scalar Headers
+
+c_b_block_header n {- 166 -} = "header"
+                             ^ ( do m <- c_indentation_indicator n
+                                    t <- c_chomping_indicator
+                                    ( s_white / b_char ) ?! "header"
+                                    s_b_comment
+                                    result (m, t)
+                               / do t <- c_chomping_indicator
+                                    m <- c_indentation_indicator n
+                                    s_b_comment
+                                    result (m, t) )
+
+-- 8.1.1.1 Block Indentation Indicator
+
+c_indentation_indicator n {- 167 -} = indicator ( ns_dec_digit - '0' ) & asInteger
+                                    / detect_scalar_indentation n
+
+detect_scalar_indentation n = peek $ ( nb_char *)
+                                   & ( b_non_content_any & ( l_empty n BlockIn *) ?)
+                                   & count_spaces (-n)
+
+count_spaces n  = (s_space & count_spaces (n .+ 1))
+                / result (max 1 n)
+
+-- 8.1.1.2 Chomping Indicator
+
+c_chomping_indicator {- 168 -} = indicator '-' & result Strip
+                               / indicator '+' ! "header" & result Keep
+                               / result Clip
+
+b_chomped_last t {- 169 -} = case t of
+                                  Strip -> nest EndScalar & b_non_content_any
+                                  Clip  -> b_normalized & nest EndScalar
+                                  Keep  -> b_normalized
+
+l_chomped_empty n t {- 170 -} = case t of
+                                     Strip -> l_strip_empty n
+                                     Clip  -> l_strip_empty n
+                                     Keep  -> l_keep_empty n
+l_strip_empty n     {- 171 -} = ( s_indent_le n & b_non_content_any *)
+                              & ( l_trail_comments n ?)
+l_keep_empty n      {- 172 -} = ( l_empty n BlockIn *)
+                              & nest EndScalar
+                              & ( l_trail_comments n ?)
+
+l_trail_comments n {- 173 -} = s_indent_lt n & c_nb_comment_text & b_non_content_any
+                             & ( l_comment *)
+
+-- 8.1.2 Literal Style
+
+c_l__literal n {- 174 -} = do nest BeginScalar
+                              indicator '|'
+                              (m, t) <- c_b_block_header n
+                              text ( l_literal_content (n .+ m) t )
+
+l_nb_literal_text n   {- 175 -} = ( l_empty n BlockIn *)
+                                & s_indent n & ( nb_char +)
+b_nb_literal_next n   {- 176 -} = b_normalized
+                                & l_nb_literal_text n
+l_literal_content n t {- 177 -} = ( l_nb_literal_text n & ( b_nb_literal_next n *)
+                                  & b_chomped_last t ?)
+                                & l_chomped_empty n t
+
+-- 8.1.3 Folded Style
+
+c_l__folded n {- 178 -} = do nest BeginScalar
+                             indicator '>'
+                             (m, t) <- c_b_block_header n
+                             text ( l_folded_content (n .+ m) t )
+
+s_nb_folded_text n  {- 179 -} = s_indent n & ns_char ! "fold" & ( nb_char *)
+l_nb_folded_lines n {- 180 -} = s_nb_folded_text n
+                              & ( b_l_folded_any n BlockIn & s_nb_folded_text n *)
+
+s_nb_spaced_text n  {- 181 -} = s_indent n & s_white ! "fold" & ( nb_char *)
+b_l_spaced        n {- 182 -} = b_normalized
+                              & ( l_empty n BlockIn *)
+l_nb_spaced_lines n {- 183 -} = s_nb_spaced_text n
+                              & ( b_l_spaced n & s_nb_spaced_text n *)
+
+l_nb_same_lines n {- 184 -} = ( l_empty n BlockIn *)
+                            & "fold" ^ ( l_nb_folded_lines n / l_nb_spaced_lines n )
+
+l_nb_diff_lines n {- 185 -} = l_nb_same_lines n
+                            & ( b_normalized & l_nb_same_lines n *)
+
+l_folded_content n t {- 186 -} = ( l_nb_diff_lines n & b_chomped_last t ?)
+                               & l_chomped_empty n t
+
+-- 8.2.1 Block Sequences
+
+detect_collection_indentation n = peek $ ( l_comment* ) & count_spaces (-n)
+detect_inline_indentation       = peek $ count_spaces 0
+
+l__block_sequence n   {- 187 -} = do m  <- detect_collection_indentation n
+                                     (   nest BeginSequence
+                                       & ( s_indent (n .+ m) & c_l_block_seq_entry (n .+ m) +)
+                                       & nest EndSequence )
+c_l_block_seq_entry n {- 188 -} = c_sequence_entry ! "node" & s_l__block_indented n BlockIn
+
+s_l__block_indented n c {- 189 -} = do m <- detect_inline_indentation
+                                       (   s_indent m
+                                         & "node"
+                                         ^ ( ns_l_in_line_sequence (n .+ 1 .+ m)
+                                           / ns_l_in_line_mapping (n .+ 1 .+ m) ) )
+                                       / s_l__block_node n c
+                                       / e_node & s_l_comments
+ns_l_in_line_sequence n {- 190 -} = nest BeginNode
+                                  & nest BeginSequence
+                                  & c_l_block_seq_entry n
+                                  & ( s_indent n & c_l_block_seq_entry n *)
+                                  & nest EndSequence
+                                  & nest EndNode
+
+-- 8.2.2 Block Mappings
+
+l__block_mapping n = {- 191 -} do m <- detect_collection_indentation n
+                                  (   nest BeginMapping
+                                    & ( s_indent (n .+ m) & ns_l_block_map_entry (n .+ m) +)
+                                    & nest EndMapping )
+
+ns_l_block_map_entry n {- 192 -} = nest BeginPair
+                                 & ( c_l_block_map_explicit_entry n
+                                   / ns_l_block_map_implicit_entry n )
+                                 & nest EndPair
+c_l_block_map_explicit_entry n {- 193 -} = c_l_block_map_explicit_key n
+                                         & ( l_block_map_explicit_value n
+                                         / e_node )
+c_l_block_map_explicit_key n   {- 194 -} = c_mapping_key ! "node" & s_l__block_indented n BlockOut
+l_block_map_explicit_value n   {- 195 -} = s_indent n & c_mapping_value & s_l__block_indented n BlockOut
+
+ns_l_block_map_implicit_entry n {- 196 -} = ( ns_s_block_map_implicit_key
+                                            / e_node )
+                                          & c_l_block_map_implicit_value n
+ns_s_block_map_implicit_key     {- 197 -} = c_s_implicit_json_key / ns_s_implicit_yaml_key
+c_l_block_map_implicit_value n  {- 198 -} = c_mapping_value ! "node" & ( s_l__block_node n BlockOut
+                                                                     / e_node & s_l_comments )
+
+ns_l_in_line_mapping n {-199 -} = nest BeginNode
+                                 & nest BeginMapping
+                                 & ns_l_block_map_entry n
+                                 & ( s_indent n & ns_l_block_map_entry n *)
+                                 & nest EndMapping
+                                 & nest EndNode
+
+-- 8.2.3 Block Nodes
+
+s_l__block_node n c  {- 200 -} = s_l__block_in_block n c / s_l__flow_in_block n
+s_l__flow_in_block n {- 201 -} = s_separate (n .+ 1) FlowOut
+                               & ns_flow_node (n .+ 1) FlowOut & s_l_comments
+
+s_l__block_in_block n c {- 202 -} = nest BeginNode
+                                  & ( s_l__block_scalar n c / s_l__block_collection n c )
+                                  & nest EndNode
+s_l__block_scalar n c   {- 203 -} = s_separate (n .+ 1) c
+                                  & ( c_ns_properties (n .+ 1) c & s_separate (n .+ 1) c ?)
+                                  & ( c_l__literal n / c_l__folded n )
+
+s_l__block_collection n c {- 204 -} = ( s_separate (n .+ 1) c & c_ns_properties (n .+ 1) c & ( s_l_comments >? ) ?)
+                                    & s_l_comments
+                                    & ( l__block_sequence (seq_spaces n c)
+                                    / l__block_mapping n )
+seq_spaces n c            {- 205 -} = case c of
+                                           BlockOut -> n .- 1
+                                           BlockIn  -> n
+
+-- Document:
+
+c_document_start {- 206 -} = token DocumentStart [ '-', '-', '-' ]
+c_document_end   {- 207 -} = token DocumentEnd [ '.', '.', '.' ]
+l_forbidden      {- 208 -} = sol
+                           & ( c_document_start / c_document_end )
+                            & ( b_char / s_white / eof )
+
+l_document_prefix {- 209 -} = ( c_byte_order_mark ?) & ( l_comment *)
+l_document_suffix {- 210 -} = c_document_end & s_l_comments
+
+l_implicit_document {- 211 -} = nest BeginDocument
+                              & s_l__block_node (-1) BlockIn
+                                `forbidding` l_forbidden
+                              & nest EndDocument
+l_explicit_document {- 212 -} =  nest BeginDocument
+                              & ( l_directive ! "doc" *)
+                              & c_document_start ! "doc"
+                              & "node" ^ ( l_implicit_document
+                                         / e_node & s_l_comments )
+                              & nest EndDocument
+
+l_leading_document   {- 213 -} = l_document_prefix
+                               & "doc" ^ ( l_explicit_document
+                                         / "node" ^ ( l_implicit_document
+                                                    / empty ) )
+l_following_document {- 214 -} = l_document_prefix
+                               & "doc" ^ ( l_explicit_document
+                                         / empty )
+
+-- Stream:
+
+l_documents   {- 215 -} = l_leading_document
+                        & ( l_following_document *)
+l_yaml_stream {- 216 -} = nest BeginStream
+                        & l_documents
+                        & ( l_document_suffix & l_documents *)
+                        & nest EndStream
diff --git a/Text/Yaml/Reference.hs b/Text/Yaml/Reference.hs
--- a/Text/Yaml/Reference.hs
+++ b/Text/Yaml/Reference.hs
@@ -27,15 +27,12 @@
     yaml,
     -- For testing:
     Context,
-    Style,
     Chomp,
     tokenizer,
     tokenizerWithN,
     tokenizerWithC,
-    tokenizerWithS,
     tokenizerWithT,
     tokenizerWithNC,
-    tokenizerWithNS,
     tokenizerWithNT,
     tokenizerNames,
     showTokens
@@ -650,6 +647,8 @@
 infix  3 <%
 infix  3 !
 infix  3 ?!
+infix  3 <?
+infix  3 >?
 infixl 3 -
 infixr 2 &
 infixr 1 /
@@ -675,16 +674,27 @@
 (^) :: (Match match result) => String -> match -> Parser result
 decision ^ parser = choice decision (match parser)
 
--- | @parser ! decision@ commits to /decision/ after successfully matching the
--- /parser/.
+-- | @parser ! decision@ commits to /decision/ (in an option) after
+-- successfully matching the /parser/.
 (!) :: (Match match result) => match -> String -> Pattern
 parser ! decision = parser & commit decision
 
--- | @parser ?! decision@ commits to /decision/ if the current position matches
--- /parser/, without consuming any characters.
+-- | @parser ?! decision@ commits to /decision/ (in an option) if the current
+-- position matches /parser/, without consuming any characters.
 (?!) :: (Match match result) => match -> String -> Pattern
 parser ?! decision = peek parser & commit decision
 
+-- | @lookbehind <?@ matches the current point without consuming any
+-- characters, if the previous character matches the lookbehind parser (single
+-- character negative lookbehind)
+(<?) :: (Match match result) => match -> Parser result
+(<?) lookbehind = prev lookbehind
+
+-- | @lookahead >?@ matches the current point without consuming any characters
+-- if it matches the lookahead parser (positive lookahead)
+(>?) :: (Match match result) => match -> Parser result
+(>?) lookahead = peek lookahead
+
 -- | @parser - rejected@ matches /parser/, except if /rejected/ matches at this
 -- point.
 (-) :: (Match match1 result1, Match match2 result2) => match1 -> match2 -> Parser result1
@@ -758,6 +768,18 @@
                                                      rState = (reply|>rState) { sDecision = parentDecision } }
           in reply'
 
+-- | @prev parser@ succeeds if /parser/ matches at the previous character. It
+-- does not consume any input.
+prev :: (Match match result) => match -> Parser result
+prev parser = Parser $ \ state ->
+  prevParser state (match parser) state { sIsPeek = True, sChars = state|>sLast : state|>sChars }
+  where prevParser point (Parser parser) state =
+          let reply = parser state
+          in case reply|>rResult of
+                  Failed message -> failReply point message
+                  Result value   -> returnReply point value
+                  More parser'   -> prevParser point parser' $ reply|>rState
+
 -- | @peek parser@ succeeds if /parser/ matches at this point, but does not
 -- consume any input.
 peek :: (Match match result) => match -> Parser result
@@ -970,8 +992,8 @@
 -- * Production parameters
 
 -- | Production context.
-data Context = BlockOut     -- ^ Outside block mapping.
-             | BlockIn      -- ^ Inside block mapping.
+data Context = BlockOut     -- ^ Outside block sequence..
+             | BlockIn      -- ^ Inside block sequence..
              | FlowOut      -- ^ Outside flow collection.
              | FlowIn       -- ^ Inside flow collection.
              | FlowKey      -- ^ Inside flow key.
@@ -998,33 +1020,6 @@
                         "flow_key"  -> FlowKey
                         _           -> error $ "unknown context: " ++ word
 
--- | Scalar style.
-data Style = Plain   -- ^ Plain scalar.
-           | Double  -- ^ Double quoted.
-           | Single  -- ^ Single quoted.
-           | Literal -- ^ Literal block.
-           | Folded  -- ^ Folded block.
-
--- | @show style@ converts a 'Style' to a 'String'.
-instance Show Style where
-  show style = case style of
-                    Plain   -> "plain"
-                    Double  -> "double"
-                    Single  -> "single"
-                    Literal -> "literal"
-                    Folded  -> "folded"
-
--- | @read style@ converts a 'String' to a 'Style'.
-instance Read Style where
-  readsPrec _ text = [ ((r word), tail) | (word, tail) <- lex text ]
-    where r word = case word of
-                        "plain"   -> Plain
-                        "double"  -> Double
-                        "single"  -> Single
-                        "literal" -> Literal
-                        "folded"  -> Folded
-                        _         -> error $ "unknown style: " ++ word
-
 -- | Chomp method.
 data Chomp = Strip -- ^ Remove all trailing line breaks.
            | Clip  -- ^ Keep first trailing line break.
@@ -1140,12 +1135,12 @@
            $ PAT(b_carriage_return)
            $ PAT(b_char)
            $ PAT(b_generic)
-           $ PAT(b_ignored_any)
-           $ PAT(b_ignored_generic)
            $ PAT(b_l_folded_as_space)
            $ PAT(b_line_feed)
            $ PAT(b_line_separator)
            $ PAT(b_next_line)
+           $ PAT(b_non_content_any)
+           $ PAT(b_non_content_generic)
            $ PAT(b_normalized)
            $ PAT(b_paragraph_separator)
            $ PAT(b_specific)
@@ -1159,7 +1154,6 @@
            $ PAT(c_document_start)
            $ PAT(c_double_quote)
            $ PAT(c_escape)
-           $ PAT(c_flow_indicator)
            $ PAT(c_folded)
            $ PAT(c_indicator)
            $ PAT(c_literal)
@@ -1170,10 +1164,10 @@
            $ PAT(c_named_tag_handle)
            $ PAT(c_nb_comment_text)
            $ PAT(c_non_specific_tag)
-           $ PAT(c_ns_alias)
+           $ PAT(c_ns_alias_node)
            $ PAT(c_ns_anchor_property)
+           $ PAT(c_ns_esc_char)
            $ PAT(c_ns_local_tag_prefix)
-           $ PAT(c_ns_property)
            $ PAT(c_ns_shorthand_tag)
            $ PAT(c_ns_tag_property)
            $ PAT(c_primary_tag_handle)
@@ -1190,7 +1184,6 @@
            $ PAT(c_tag_handle)
            $ PAT(c_verbatim_tag)
            $ PAT(e_node)
-           $ PAT(e_no_document)
            $ PAT(e_scalar)
            $ PAT(l_comment)
            $ PAT(l_directive)
@@ -1205,7 +1198,11 @@
            $ PAT(l_yaml_stream)
            $ PAT(nb_char)
            $ PAT(nb_double_char)
+           $ PAT(nb_double_one_line)
+           $ PAT(nb_ns_double_in_line)
+           $ PAT(nb_ns_single_in_line)
            $ PAT(nb_single_char)
+           $ PAT(nb_single_one_line)
            $ PAT(ns_anchor_char)
            $ PAT(ns_anchor_name)
            $ PAT(ns_ascii_letter)
@@ -1221,7 +1218,6 @@
            $ PAT(ns_esc_backspace)
            $ PAT(ns_esc_bell)
            $ PAT(ns_esc_carriage_return)
-           $ PAT(ns_esc_char)
            $ PAT(ns_esc_double_quote)
            $ PAT(ns_esc_escape)
            $ PAT(ns_esc_form_feed)
@@ -1250,10 +1246,7 @@
            $ PAT(ns_yaml_directive)
            $ PAT(ns_yaml_version)
            $ PAT(s_b_comment)
-           $ PAT(s_b_double_escaped)
            $ PAT(s_l_comments)
-           $ PAT(s_ns_double_chars)
-           $ PAT(s_ns_single_chars)
            $ PAT(s_separate_in_line)
            $ PAT(s_space)
            $ PAT(s_tab)
@@ -1271,12 +1264,13 @@
 -- | @tokenizersWithN@ returns a mapping from a production name to a production
 -- tokenizer (that takes an /n/ argument).
 tokenizersWithN :: Map.Map String (Int -> Tokenizer)
-tokenizersWithN = PAR(c_indentation_indicator) "m"
-                $ PAR(count_spaces) "m"
+tokenizersWithN = PAR(c_b_block_header) "(m,t)"
                 $ PAC(detect_collection_indentation) "m"
                 $ PAC(detect_scalar_indentation) "m"
-                $ PAT(b_l_literal_next)
+                $ PAR(c_indentation_indicator) "m"
+                $ PAR(count_spaces) "m"
                 $ PAT(b_l_spaced)
+                $ PAT(b_nb_literal_next)
                 $ PAT(c_l_block_map_explicit_entry)
                 $ PAT(c_l_block_map_explicit_key)
                 $ PAT(c_l_block_map_implicit_value)
@@ -1287,33 +1281,33 @@
                 $ PAT(l__block_mapping)
                 $ PAT(l__block_sequence)
                 $ PAT(l_keep_empty)
+                $ PAT(l_nb_diff_lines)
                 $ PAT(l_nb_folded_lines)
-                $ PAT(l_nb_literal_chars)
+                $ PAT(l_nb_literal_text)
+                $ PAT(l_nb_same_lines)
                 $ PAT(l_nb_spaced_lines)
-                $ PAT(l_nb_start_with_any)
-                $ PAT(l_nb_start_with_folded)
-                $ PAT(l_nb_start_with_spaced)
                 $ PAT(l_strip_empty)
                 $ PAT(l_trail_comments)
+                $ PAT(nb_double_multi_line)
+                $ PAT(nb_single_multi_line)
                 $ PAT(ns_l_block_map_entry)
                 $ PAT(ns_l_block_map_implicit_entry)
                 $ PAT(ns_l_in_line_mapping)
                 $ PAT(ns_l_in_line_sequence)
-                $ PAT(s_double_multi)
-                $ PAT(s_ignored_prefix_block)
-                $ PAT(s_ignored_prefix_flow)
+                $ PAT(s_block_line_prefix)
+                $ PAT(s_flow_line_prefix)
                 $ PAT(s_indent)
                 $ PAT(s_indent_le)
                 $ PAT(s_indent_lt)
                 $ PAT(s_l_double_any)
+                $ PAT(s_l_double_escaped)
                 $ PAT(s_l_flow_folded)
                 $ PAT(s_l__flow_in_block)
                 $ PAT(s_nb_folded_text)
                 $ PAT(s_nb_spaced_text)
-                $ PAT(s_ns_double_next)
-                $ PAT(s_ns_single_next)
+                $ PAT(s_ns_double_next_line)
+                $ PAT(s_ns_single_next_line)
                 $ PAT(s_separate_lines)
-                $ PAT(s_single_multi)
                 $ Map.empty
   where pat name pattern     = Map.insert (pName name) (\ n -> patternTokenizer     (match   $ pattern n))
         par name parser what = Map.insert (pName name) (\ n -> parserTokenizer what (match   $ parser  n))
@@ -1331,12 +1325,12 @@
 -- | @tokenizersWithC@ returns a mapping from a production name to a production
 -- tokenizer (that takes a /c/ argument).
 tokenizersWithC :: Map.Map String (Context -> Tokenizer)
-tokenizersWithC = PAT(nb_plain_char)
+tokenizersWithC = PAT(nb_ns_plain_in_line)
+                $ PAT(nb_plain_char)
                 $ PAT(ns_plain_char)
                 $ PAT(ns_plain_first)
+                $ PAT(ns_plain_one_line)
                 $ PAT(ns_plain_safe)
-                $ PAT(ns_plain_single)
-                $ PAT(s_ns_plain_chars)
                 $ Map.empty
   where pat name pattern = Map.insert (pName name) (\ c -> patternTokenizer (match $ pattern c))
 
@@ -1349,22 +1343,6 @@
     Just tokenizer -> Just $ tokenizer c
     Nothing        -> Nothing
 
--- | @tokenizersWithS@ returns a mapping from a production name to a production
--- tokenizer (that takes a /s/ argument).
-tokenizersWithS :: Map.Map String (Style -> Tokenizer)
-tokenizersWithS = PAT(c_style_indicator)
-                $ Map.empty
-  where pat name pattern = Map.insert (pName name) (\ s -> patternTokenizer (match $ pattern s))
-
--- | @tokenizerWithS name s@ converts the production (that requires an /s/
--- argument) with the specified /name/ to a simple 'Tokenizer', or @Nothing@ if
--- it isn't known.
-tokenizerWithS :: String -> Style -> Maybe Tokenizer
-tokenizerWithS name s =
-  case Map.lookup name tokenizersWithS of
-    Just tokenizer -> Just $ tokenizer s
-    Nothing        -> Nothing
-
 -- | @tokenizersWithT@ returns a mapping from a production name to a production
 -- tokenizer (that takes a /t/ argument).
 tokenizersWithT :: Map.Map String (Chomp -> Tokenizer)
@@ -1384,21 +1362,25 @@
 -- | @tokenizersWithNC@ returns a mapping from a production name to a
 -- production tokenizer (that requires /n/ and /c/ arguments).
 tokenizersWithNC :: Map.Map String (Int -> Context -> Tokenizer)
-tokenizersWithNC = PAT(c_double_quoted)
+tokenizersWithNC = PAT(b_l_folded_any)
+                 $ PAT(b_l_folded_specific)
+                 $ PAT(b_l_folded_trimmed)
+                 $ PAT(c_double_quoted)
                  $ PAT(c_flow_json_content)
                  $ PAT(c_flow_json_node)
                  $ PAT(c_flow_mapping)
                  $ PAT(c_flow_sequence)
                  $ PAT(c_ns_flow_map_adjacent_value)
+                 $ PAT(c_ns_flow_map_empty_key_entry)
                  $ PAT(c_ns_flow_map_json_key_entry)
                  $ PAT(c_ns_flow_map_separate_value)
                  $ PAT(c_ns_flow_pair_json_key_entry)
                  $ PAT(c_ns_properties)
                  $ PAT(c_single_quoted)
+                 $ PAT(l_empty)
                  $ PAT(nb_double_text)
                  $ PAT(nb_single_text)
                  $ PAT(ns_flow_content)
-                 $ PAT(ns_flow_map_empty_key_entry)
                  $ PAT(ns_flow_map_entry)
                  $ PAT(ns_flow_map_explicit_entry)
                  $ PAT(ns_flow_map_implicit_entry)
@@ -1411,7 +1393,7 @@
                  $ PAT(ns_flow_yaml_content)
                  $ PAT(ns_flow_yaml_node)
                  $ PAT(ns_plain)
-                 $ PAT(ns_plain_multi)
+                 $ PAT(ns_plain_multi_line)
                  $ PAT(ns_s_flow_map_entries)
                  $ PAT(ns_s_flow_seq_entries)
                  $ PAT(s_l__block_collection)
@@ -1419,7 +1401,8 @@
                  $ PAT(s_l__block_indented)
                  $ PAT(s_l__block_node)
                  $ PAT(s_l__block_scalar)
-                 $ PAT(s_ns_plain_next)
+                 $ PAT(s_line_prefix)
+                 $ PAT(s_ns_plain_next_line)
                  $ PAT(s_separate)
                  $ Map.empty
   where pat name pattern = Map.insert (pName name) (\ n c -> patternTokenizer (match $ pattern n c))
@@ -1433,28 +1416,6 @@
     Just tokenizer -> Just $ tokenizer n c
     Nothing        -> Nothing
 
--- | @tokenizersWithNS@ returns a mapping from a production name to a production
--- tokenizer (that requires /n/ and /s/ arguments).
-tokenizersWithNS :: Map.Map String (Int -> Style -> Tokenizer)
-tokenizersWithNS = PAR(c_b__block_header) "(m,t)"
-                 $ PAT(b_l_folded_any)
-                 $ PAT(b_l_folded_specific)
-                 $ PAT(b_l_folded_trimmed)
-                 $ PAT(l_empty)
-                 $ PAT(s_ignored_prefix)
-                 $ Map.empty
-  where pat name pattern     = Map.insert (pName name) (\ n s -> patternTokenizer     (match $ pattern n s))
-        par name parser what = Map.insert (pName name) (\ n s -> parserTokenizer what (match $ parser  n s))
-
--- | @tokenizerWithNS name n s@ converts the production (that requires /n/ and
--- /s/ arguments) with the specified /name/ to a simple 'Tokenizer', or
--- @Nothing@ if it isn't known.
-tokenizerWithNS :: String -> Int -> Style -> Maybe Tokenizer
-tokenizerWithNS name n s =
-  case Map.lookup name tokenizersWithNS of
-    Just tokenizer -> Just $ tokenizer n s
-    Nothing        -> Nothing
-
 -- | @tokenizersWithNT@ returns a mapping from a production name to a
 -- production tokenizer (that requires /n/ and /t/ arguments).
 tokenizersWithNT :: Map.Map String (Int -> Chomp -> Tokenizer)
@@ -1478,10 +1439,8 @@
 tokenizerNames = (Map.keys tokenizers)
               ++ (Map.keys tokenizersWithN)
               ++ (Map.keys tokenizersWithC)
-              ++ (Map.keys tokenizersWithS)
               ++ (Map.keys tokenizersWithT)
               ++ (Map.keys tokenizersWithNC)
-              ++ (Map.keys tokenizersWithNS)
               ++ (Map.keys tokenizersWithNT)
 
 -- * Productions
diff --git a/YamlReference.cabal b/YamlReference.cabal
--- a/YamlReference.cabal
+++ b/YamlReference.cabal
@@ -1,1221 +1,890 @@
 Name:                YamlReference
-Version:             0.8
-Cabal-Version:       >= 1.2
-License:             LGPL
-License-File:        lgpl.txt
-Copyright:           Oren Ben-Kiki 2007, 2008
-Author:              Oren Ben-Kiki
-Maintainer:          yaml-oren@ben-kiki.org
-Stability:           alpha
-Homepage:            http://www.ben-kiki.org/oren/YamlReference
-Package-Url:         http://www.ben-kiki.org/oren/YamlReference/YamlReference-0.8.tar.gz
-Category:            Text
-Synopsis:            YAML reference implementation
-Description:         This package contains \"the\" reference YAML syntax parser
-                     ("Text.Yaml.Reference"), generated directly from the YAML
-                     specifications, as well as sample program (@yaml2yeast@)
-                     that allows accessing it from the command line, converting
-                     YAML files to YEAST tokens. This is intended to be more of
-                     an \"executable specification\" for YAML rather than an
-                     actual basis for YAML tool chains. That said, it is
-                     possible to build interesting tools on top of it, such as
-                     the @yeast2html@ YAML syntax visualizer (contained in this
-                     package), pretty printers, etc. This is a streaming parser
-                     that will \"immediately\" begin to generate output. Updated
-                     to fix a greedy production for nested block mappings.
-Extra-Source-Files:  Text/Yaml/Reference.bnf yeast2html yaml2yeast.css
-                     tests/b-as-line-feed.input tests/b-as-line-feed.output
-                     tests/b-carriage-return.input
-                     tests/b-carriage-return.output tests/b-char.cr.input
-                     tests/b-char.cr.output tests/b-char.invalid.input
-                     tests/b-char.invalid.output tests/b-char.lf.input
-                     tests/b-char.lf.output tests/b-char.ls.input
-                     tests/b-char.ls.output tests/b-char.nl.input
-                     tests/b-char.nl.output tests/b-char.ps.input
-                     tests/b-char.ps.output tests/b-chomped-last.t=clip.input
-                     tests/b-chomped-last.t=clip.invalid.input
-                     tests/b-chomped-last.t=clip.invalid.output
-                     tests/b-chomped-last.t=clip.output
-                     tests/b-chomped-last.t=keep.input
-                     tests/b-chomped-last.t=keep.output
-                     tests/b-chomped-last.t=strip.input
-                     tests/b-chomped-last.t=strip.output
-                     tests/b-generic.cr.input tests/b-generic.crlf.input
-                     tests/b-generic.crlf.output tests/b-generic.cr.output
-                     tests/b-generic.invalid.input
-                     tests/b-generic.invalid.output tests/b-generic.lf.input
-                     tests/b-generic.lf.output tests/b-generic.nl.input
-                     tests/b-generic.nl.output
-                     tests/b-ignored-any.invalid.input
-                     tests/b-ignored-any.invalid.output
-                     tests/b-ignored-any.lf.input tests/b-ignored-any.lf.output
-                     tests/b-ignored-any.ls.input tests/b-ignored-any.ls.output
-                     tests/b-ignored-generic.input
-                     tests/b-ignored-generic.output
-                     tests/b-l-folded-any.n=4.s=plain.as-space.input
-                     tests/b-l-folded-any.n=4.s=plain.as-space.output
-                     tests/b-l-folded-any.n=4.s=plain.invalid.input
-                     tests/b-l-folded-any.n=4.s=plain.invalid.output
-                     tests/b-l-folded-any.n=4.s=plain.specific.input
-                     tests/b-l-folded-any.n=4.s=plain.specific.output
-                     tests/b-l-folded-any.n=4.s=plain.trimmed.input
-                     tests/b-l-folded-any.n=4.s=plain.trimmed.output
-                     tests/b-l-folded-as-space.input
-                     tests/b-l-folded-as-space.invalid.input
-                     tests/b-l-folded-as-space.invalid.output
-                     tests/b-l-folded-as-space.output
-                     tests/b-l-folded-specific.n=4.s=plain.invalid.input
-                     tests/b-l-folded-specific.n=4.s=plain.invalid.output
-                     tests/b-l-folded-specific.n=4.s=plain.ls.input
-                     tests/b-l-folded-specific.n=4.s=plain.ls-lf-ls.input
-                     tests/b-l-folded-specific.n=4.s=plain.ls-lf-ls.output
-                     tests/b-l-folded-specific.n=4.s=plain.ls.output
-                     tests/b-l-folded-trimmed.n=4.s=plain.invalid.input
-                     tests/b-l-folded-trimmed.n=4.s=plain.invalid.output
-                     tests/b-l-folded-trimmed.n=4.s=plain.lf-ls-lf.input
-                     tests/b-l-folded-trimmed.n=4.s=plain.lf-ls-lf.output
-                     tests/b-line-feed.input tests/b-line-feed.output
-                     tests/b-line-separator.input tests/b-line-separator.output
-                     tests/b-l-literal-next.n=4.input
-                     tests/b-l-literal-next.n=4.invalid.input
-                     tests/b-l-literal-next.n=4.invalid.output
-                     tests/b-l-literal-next.n=4.output
-                     tests/b-l-spaced.n=4.input
-                     tests/b-l-spaced.n=4.invalid.input
-                     tests/b-l-spaced.n=4.invalid.output
-                     tests/b-l-spaced.n=4.output tests/b-next-line.input
-                     tests/b-next-line.output tests/b-normalized.invalid.input
-                     tests/b-normalized.invalid.output
-                     tests/b-normalized.lf.input tests/b-normalized.lf.output
-                     tests/b-normalized.ls.input tests/b-normalized.ls.output
-                     tests/b-paragraph-separator.input
-                     tests/b-paragraph-separator.output
-                     tests/b-specific.invalid.input
-                     tests/b-specific.invalid.output tests/b-specific.ls.input
-                     tests/b-specific.ls.output tests/b-specific.ps.input
-                     tests/b-specific.ps.output tests/c-alias.input
-                     tests/c-alias.output tests/c-anchor.input
-                     tests/c-anchor.output
-                     tests/c-b+block-header.n=2.s=folded.i.input
-                     tests/c-b+block-header.n=2.s=folded.im.input
-                     tests/c-b+block-header.n=2.s=folded.im.output
-                     tests/c-b+block-header.n=2.s=folded.imt.input
-                     tests/c-b+block-header.n=2.s=folded.imt.output
-                     tests/c-b+block-header.n=2.s=folded.invalid.input
-                     tests/c-b+block-header.n=2.s=folded.invalid.output
-                     tests/c-b+block-header.n=2.s=folded.i.output
-                     tests/c-b+block-header.n=2.s=folded.it.input
-                     tests/c-b+block-header.n=2.s=folded.itm.input
-                     tests/c-b+block-header.n=2.s=folded.itm.output
-                     tests/c-b+block-header.n=2.s=folded.it.output
-                     tests/c-byte-order-mark.invalid.input
-                     tests/c-byte-order-mark.invalid.output
-                     tests/c-byte-order-mark.utf16be.input
-                     tests/c-byte-order-mark.utf16be.output
-                     tests/c-byte-order-mark.utf16le.input
-                     tests/c-byte-order-mark.utf16le.output
-                     tests/c-byte-order-mark.utf8.input
-                     tests/c-byte-order-mark.utf8.output
-                     tests/c-chomping-indicator.empty.input
-                     tests/c-chomping-indicator.empty.output
-                     tests/c-chomping-indicator.hyphen.input
-                     tests/c-chomping-indicator.hyphen.output
-                     tests/c-chomping-indicator.invalid.input
-                     tests/c-chomping-indicator.invalid.output
-                     tests/c-chomping-indicator.plus.input
-                     tests/c-chomping-indicator.plus.output
-                     tests/c-collect-entry.input tests/c-collect-entry.output
-                     tests/c-comment.input tests/c-comment.output
-                     tests/c-directive.input tests/c-directive.output
-                     tests/c-document-end.input
-                     tests/c-document-end.invalid.input
-                     tests/c-document-end.invalid.output
-                     tests/c-document-end.output tests/c-document-start.input
-                     tests/c-document-start.invalid.input
-                     tests/c-document-start.invalid.output
-                     tests/c-document-start.output
-                     tests/c-double-quoted.n=4.c=flow-out.input
-                     tests/c-double-quoted.n=4.c=flow-out.invalid.input
-                     tests/c-double-quoted.n=4.c=flow-out.invalid.output
-                     tests/c-double-quoted.n=4.c=flow-out.output
-                     tests/c-double-quote.input tests/c-double-quote.output
-                     tests/c-escape.input tests/c-escape.invalid.input
-                     tests/c-escape.invalid.output tests/c-escape.output
-                     tests/c-flow-indicator.collect-entry.input
-                     tests/c-flow-indicator.collect-entry.output
-                     tests/c-flow-indicator.invalid.input
-                     tests/c-flow-indicator.invalid.output
-                     tests/c-flow-indicator.mapping-end.input
-                     tests/c-flow-indicator.mapping-end.output
-                     tests/c-flow-indicator.mapping-start.input
-                     tests/c-flow-indicator.mapping-start.output
-                     tests/c-flow-indicator.sequence-end.input
-                     tests/c-flow-indicator.sequence-end.output
-                     tests/c-flow-indicator.sequence-start.input
-                     tests/c-flow-indicator.sequence-start.output
-                     tests/c-flow-json-content.n=4.c=flow-in.double.input
-                     tests/c-flow-json-content.n=4.c=flow-in.double.output
-                     tests/c-flow-json-content.n=4.c=flow-in.invalid.input
-                     tests/c-flow-json-content.n=4.c=flow-in.invalid.output
-                     tests/c-flow-json-content.n=4.c=flow-in.mapping.input
-                     tests/c-flow-json-content.n=4.c=flow-in.mapping.output
-                     tests/c-flow-json-content.n=4.c=flow-in.sequence.input
-                     tests/c-flow-json-content.n=4.c=flow-in.sequence.output
-                     tests/c-flow-json-node.n=4.c=flow-in.invalid.input
-                     tests/c-flow-json-node.n=4.c=flow-in.invalid.output
-                     tests/c-flow-json-node.n=4.c=flow-in.tagged.input
-                     tests/c-flow-json-node.n=4.c=flow-in.tagged.output
-                     tests/c-flow-json-node.n=4.c=flow-in.untagged.input
-                     tests/c-flow-json-node.n=4.c=flow-in.untagged.output
-                     tests/c-flow-mapping.n=4.c=flow-in.compact.input
-                     tests/c-flow-mapping.n=4.c=flow-in.compact.output
-                     tests/c-flow-mapping.n=4.c=flow-in.invalid.input
-                     tests/c-flow-mapping.n=4.c=flow-in.invalid.output
-                     tests/c-flow-mapping.n=4.c=flow-in.long.input
-                     tests/c-flow-mapping.n=4.c=flow-in.long.output
-                     tests/c-flow-mapping.n=4.c=flow-in.spaced.input
-                     tests/c-flow-mapping.n=4.c=flow-in.spaced.output
-                     tests/c-flow-sequence.n=4.c=flow-in.compact.input
-                     tests/c-flow-sequence.n=4.c=flow-in.compact.output
-                     tests/c-flow-sequence.n=4.c=flow-in.invalid.input
-                     tests/c-flow-sequence.n=4.c=flow-in.invalid.output
-                     tests/c-flow-sequence.n=4.c=flow-in.spaced.input
-                     tests/c-flow-sequence.n=4.c=flow-in.spaced.output
-                     tests/c-folded.input tests/c-folded.output
-                     tests/c-indentation-indicator.n=0.input
-                     tests/c-indentation-indicator.n=0.invalid.input
-                     tests/c-indentation-indicator.n=0.invalid.output
-                     tests/c-indentation-indicator.n=0.output
-                     tests/c-indicator.alias.input
-                     tests/c-indicator.alias.output
-                     tests/c-indicator.anchor.input
-                     tests/c-indicator.anchor.output
-                     tests/c-indicator.collect-entry.input
-                     tests/c-indicator.collect-entry.output
-                     tests/c-indicator.comment.input
-                     tests/c-indicator.comment.output
-                     tests/c-indicator.directive.input
-                     tests/c-indicator.directive.output
-                     tests/c-indicator.double-quote.input
-                     tests/c-indicator.double-quote.output
-                     tests/c-indicator.folded.input
-                     tests/c-indicator.folded.output
-                     tests/c-indicator.invalid.input
-                     tests/c-indicator.invalid.output
-                     tests/c-indicator.literal.input
-                     tests/c-indicator.literal.output
-                     tests/c-indicator.mapping-end.input
-                     tests/c-indicator.mapping-end.output
-                     tests/c-indicator.mapping-key.input
-                     tests/c-indicator.mapping-key.output
-                     tests/c-indicator.mapping-start.input
-                     tests/c-indicator.mapping-start.output
-                     tests/c-indicator.mapping-value.input
-                     tests/c-indicator.mapping-value.output
-                     tests/c-indicator.reserved.at.input
-                     tests/c-indicator.reserved.at.output
-                     tests/c-indicator.reserved.backtick.input
-                     tests/c-indicator.reserved.backtick.output
-                     tests/c-indicator.sequence-end.input
-                     tests/c-indicator.sequence-end.output
-                     tests/c-indicator.sequence-entry.input
-                     tests/c-indicator.sequence-entry.output
-                     tests/c-indicator.sequence-start.input
-                     tests/c-indicator.sequence-start.output
-                     tests/c-indicator.single-quote.input
-                     tests/c-indicator.single-quote.output
-                     tests/c-indicator.tag.input tests/c-indicator.tag.output
-                     tests/c-l-block-map-explicit-entry.n=2.input
-                     tests/c-l-block-map-explicit-entry.n=2.invalid.input
-                     tests/c-l-block-map-explicit-entry.n=2.invalid.output
-                     tests/c-l-block-map-explicit-entry.n=2.output
-                     tests/c-l-block-map-explicit-key.n=2.input
-                     tests/c-l-block-map-explicit-key.n=2.invalid.input
-                     tests/c-l-block-map-explicit-key.n=2.invalid.output
-                     tests/c-l-block-map-explicit-key.n=2.output
-                     tests/c-l-block-map-implicit-value.n=2.empty.input
-                     tests/c-l-block-map-implicit-value.n=2.empty.output
-                     tests/c-l-block-map-implicit-value.n=2.invalid.input
-                     tests/c-l-block-map-implicit-value.n=2.invalid.output
-                     tests/c-l-block-map-implicit-value.n=2.plain.input
-                     tests/c-l-block-map-implicit-value.n=2.plain.output
-                     tests/c-l-block-seq-entry.n=2.input
-                     tests/c-l-block-seq-entry.n=2.invalid.input
-                     tests/c-l-block-seq-entry.n=2.invalid.output
-                     tests/c-l-block-seq-entry.n=2.output
-                     tests/c-l+folded.n=2.indent.input
-                     tests/c-l+folded.n=2.indent.output
-                     tests/c-l+folded.n=2.invalid.input
-                     tests/c-l+folded.n=2.invalid.output
-                     tests/c-l+folded.n=2.simple.input
-                     tests/c-l+folded.n=2.simple.output tests/c-literal.input
-                     tests/c-literal.output tests/c-l+literal.n=2.invalid.input
-                     tests/c-l+literal.n=2.invalid.output
-                     tests/c-l+literal.n=2.simple.input
-                     tests/c-l+literal.n=2.simple.output
-                     tests/c-l+literal.n=2.strip-indent.input
-                     tests/c-l+literal.n=2.strip-indent.output
-                     tests/c-l+literal.n=2.strip.input
-                     tests/c-l+literal.n=2.strip.output
-                     tests/c-mapping-end.input tests/c-mapping-end.output
-                     tests/c-mapping-key.input tests/c-mapping-key.output
-                     tests/c-mapping-start.input tests/c-mapping-start.output
-                     tests/c-mapping-value.input tests/c-mapping-value.output
-                     tests/c-named-tag-handle.input
-                     tests/c-named-tag-handle.invalid.input
-                     tests/c-named-tag-handle.invalid.output
-                     tests/c-named-tag-handle.output
-                     tests/c-nb-comment-text.comment.input
-                     tests/c-nb-comment-text.comment.output
-                     tests/c-nb-comment-text.comment-text.input
-                     tests/c-nb-comment-text.comment-text.output
-                     tests/c-nb-comment-text.invalid.input
-                     tests/c-nb-comment-text.invalid.output
-                     tests/c-non-specific-tag.input
-                     tests/c-non-specific-tag.invalid.input
-                     tests/c-non-specific-tag.invalid.output
-                     tests/c-non-specific-tag.output tests/c-ns-alias.input
-                     tests/c-ns-alias.invalid.input
-                     tests/c-ns-alias.invalid.output tests/c-ns-alias.output
-                     tests/c-ns-anchor-property.input
-                     tests/c-ns-anchor-property.invalid.input
-                     tests/c-ns-anchor-property.invalid.output
-                     tests/c-ns-anchor-property.output
-                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.compact.input
-                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.compact.output
-                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.empty.input
-                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.empty.output
-                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.invalid.input
-                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.invalid.output
-                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.spaced.input
-                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.spaced.output
-                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.compact.input
-                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.compact.output
-                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.empty.input
-                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.empty.output
-                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.invalid.input
-                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.invalid.output
-                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.spaced.input
-                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.spaced.output
-                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.empty.input
-                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.empty.output
-                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.invalid.input
-                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.invalid.output
-                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.value.input
-                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.value.output
-                     tests/c-ns-flow-pair-json-key-entry.n=4.c=flow-in.input
-                     tests/c-ns-flow-pair-json-key-entry.n=4.c=flow-in.invalid.input
-                     tests/c-ns-flow-pair-json-key-entry.n=4.c=flow-in.invalid.output
-                     tests/c-ns-flow-pair-json-key-entry.n=4.c=flow-in.output
-                     tests/c-ns-local-tag-prefix.input
-                     tests/c-ns-local-tag-prefix.invalid.input
-                     tests/c-ns-local-tag-prefix.invalid.output
-                     tests/c-ns-local-tag-prefix.output
-                     tests/c-ns-properties.n=0.c=block-out.input
-                     tests/c-ns-properties.n=0.c=block-out.invalid.input
-                     tests/c-ns-properties.n=0.c=block-out.invalid.output
-                     tests/c-ns-properties.n=0.c=block-out.output
-                     tests/c-ns-properties.n=0.c=flow-out.input
-                     tests/c-ns-properties.n=0.c=flow-out.invalid.input
-                     tests/c-ns-properties.n=0.c=flow-out.invalid.output
-                     tests/c-ns-properties.n=0.c=flow-out.output
-                     tests/c-ns-property.anchor.input
-                     tests/c-ns-property.anchor.output
-                     tests/c-ns-property.invalid.input
-                     tests/c-ns-property.invalid.output
-                     tests/c-ns-property.tag.input
-                     tests/c-ns-property.tag.output
-                     tests/c-ns-shorthand-tag.invalid.input
-                     tests/c-ns-shorthand-tag.invalid.output
-                     tests/c-ns-shorthand-tag.named.input
-                     tests/c-ns-shorthand-tag.named.output
-                     tests/c-ns-shorthand-tag.primary.input
-                     tests/c-ns-shorthand-tag.primary.output
-                     tests/c-ns-shorthand-tag.secondary.input
-                     tests/c-ns-shorthand-tag.secondary.output
-                     tests/c-ns-tag-property.invalid.input
-                     tests/c-ns-tag-property.invalid.output
-                     tests/c-ns-tag-property.non-specific.input
-                     tests/c-ns-tag-property.non-specific.output
-                     tests/c-ns-tag-property.shorthand.input
-                     tests/c-ns-tag-property.shorthand.output
-                     tests/c-ns-tag-property.verbatim.input
-                     tests/c-ns-tag-property.verbatim.output
-                     tests/count-spaces.n=0.0.input
-                     tests/count-spaces.n=0.0.output
-                     tests/count-spaces.n=0.1.input
-                     tests/count-spaces.n=0.1.output
-                     tests/count-spaces.n=0.2.input
-                     tests/count-spaces.n=0.2.output
-                     tests/count-spaces.n=-1.0.input
-                     tests/count-spaces.n=1.0.input
-                     tests/count-spaces.n=-1.0.output
-                     tests/count-spaces.n=1.0.output
-                     tests/count-spaces.n=-1.1.input
-                     tests/count-spaces.n=1.1.input
-                     tests/count-spaces.n=-1.1.output
-                     tests/count-spaces.n=1.1.output
-                     tests/count-spaces.n=-1.2.input
-                     tests/count-spaces.n=1.2.input
-                     tests/count-spaces.n=-1.2.output
-                     tests/count-spaces.n=1.2.output
-                     tests/c-primary-tag-handle.input
-                     tests/c-primary-tag-handle.invalid.input
-                     tests/c-primary-tag-handle.invalid.output
-                     tests/c-primary-tag-handle.output
-                     tests/c-printable.10000.input
-                     tests/c-printable.10000.output
-                     tests/c-printable.10ffff.input
-                     tests/c-printable.10ffff.output tests/c-printable.cr.input
-                     tests/c-printable.cr.output tests/c-printable.d7ff.input
-                     tests/c-printable.d7ff.output tests/c-printable.e000.input
-                     tests/c-printable.e000.output tests/c-printable.fffd.input
-                     tests/c-printable.fffd.output
-                     tests/c-printable.invalid.input
-                     tests/c-printable.invalid.output
-                     tests/c-printable.lf.input tests/c-printable.lf.output
-                     tests/c-printable.nbsp.input tests/c-printable.nbsp.output
-                     tests/c-printable.nel.input tests/c-printable.nel.output
-                     tests/c-printable.sp.input tests/c-printable.sp.output
-                     tests/c-printable.tab.input tests/c-printable.tab.output
-                     tests/c-printable.tilde.input
-                     tests/c-printable.tilde.output tests/c-quoted-quote.input
-                     tests/c-quoted-quote.invalid.input
-                     tests/c-quoted-quote.invalid.output
-                     tests/c-quoted-quote.output tests/c-reserved.at.input
-                     tests/c-reserved.at.output tests/c-reserved.backtick.input
-                     tests/c-reserved.backtick.output
-                     tests/c-secondary-tag-handle.input
-                     tests/c-secondary-tag-handle.invalid.input
-                     tests/c-secondary-tag-handle.invalid.output
-                     tests/c-secondary-tag-handle.output
-                     tests/c-sequence-end.input tests/c-sequence-end.output
-                     tests/c-sequence-entry.input tests/c-sequence-entry.output
-                     tests/c-sequence-start.input tests/c-sequence-start.output
-                     tests/c-s-implicit-json-key.just.input
-                     tests/c-s-implicit-json-key.just.output
-                     tests/c-s-implicit-json-key.long.input
-                     tests/c-s-implicit-json-key.long.output
-                     tests/c-s-implicit-json-key.short.input
-                     tests/c-s-implicit-json-key.short.output
-                     tests/c-single-quoted.n=4.c=flow-out.input
-                     tests/c-single-quoted.n=4.c=flow-out.invalid.input
-                     tests/c-single-quoted.n=4.c=flow-out.invalid.output
-                     tests/c-single-quoted.n=4.c=flow-out.output
-                     tests/c-single-quote.input tests/c-single-quote.output
-                     tests/c-style-indicator.s=folded.input
-                     tests/c-style-indicator.s=folded.output
-                     tests/c-style-indicator.s=literal.input
-                     tests/c-style-indicator.s=literal.invalid.input
-                     tests/c-style-indicator.s=literal.invalid.output
-                     tests/c-style-indicator.s=literal.output
-                     tests/c-tag-handle.invalid.input
-                     tests/c-tag-handle.invalid.output
-                     tests/c-tag-handle.named.input
-                     tests/c-tag-handle.named.output
-                     tests/c-tag-handle.primary.input
-                     tests/c-tag-handle.primary.output
-                     tests/c-tag-handle.secondary.input
-                     tests/c-tag-handle.secondary.output tests/c-tag.input
-                     tests/c-tag.output tests/c-verbatim-tag.input
-                     tests/c-verbatim-tag.invalid.input
-                     tests/c-verbatim-tag.invalid.output
-                     tests/c-verbatim-tag.output
-                     tests/detect-collection-indentation.n=1.input
-                     tests/detect-collection-indentation.n=1.output
-                     tests/detect-inline-indentation.input
-                     tests/detect-inline-indentation.output
-                     tests/detect-scalar-indentation.n=2.input
-                     tests/detect-scalar-indentation.n=2.output
-                     tests/e-node.input tests/e-node.output
-                     tests/e-no-document.input tests/e-no-document.output
-                     tests/e-scalar.input tests/e-scalar.output
-                     tests/l-block-map-explicit-value.n=2.input
-                     tests/l-block-map-explicit-value.n=2.invalid.input
-                     tests/l-block-map-explicit-value.n=2.invalid.output
-                     tests/l-block-map-explicit-value.n=2.output
-                     tests/l+block-mapping.n=-1.input
-                     tests/l+block-mapping.n=1.input
-                     tests/l+block-mapping.n=-1.output
-                     tests/l+block-mapping.n=1.output
-                     tests/l+block-mapping.n=2.invalid.input
-                     tests/l+block-mapping.n=2.invalid.output
-                     tests/l+block-sequence.n=1.input
-                     tests/l+block-sequence.n=1.output
-                     tests/l+block-sequence.n=2.invalid.input
-                     tests/l+block-sequence.n=2.invalid.output
-                     tests/l-chomped-empty.n=4.t=clip.input
-                     tests/l-chomped-empty.n=4.t=clip.output
-                     tests/l-chomped-empty.n=4.t=keep.input
-                     tests/l-chomped-empty.n=4.t=keep.output
-                     tests/l-chomped-empty.n=4.t=strip.input
-                     tests/l-chomped-empty.n=4.t=strip.output
-                     tests/l-comment.empty.input tests/l-comment.empty.output
-                     tests/l-comment.invalid.input
-                     tests/l-comment.invalid.output
-                     tests/l-comment.spaces-comment.input
-                     tests/l-comment.spaces-comment.output
-                     tests/l-directive.invalid.input
-                     tests/l-directive.invalid.output
-                     tests/l-directive.reserved.input
-                     tests/l-directive.reserved.output
-                     tests/l-directive.tag.input
-                     tests/l-directive.tag.invalid.input
-                     tests/l-directive.tag.invalid.output
-                     tests/l-directive.tag.output tests/l-directive.yaml.input
-                     tests/l-directive.yaml.invalid.input
-                     tests/l-directive.yaml.invalid.output
-                     tests/l-directive.yaml.output
-                     tests/l-document-prefix.bom-comment.input
-                     tests/l-document-prefix.bom-comment.output
-                     tests/l-document-prefix.bom.input
-                     tests/l-document-prefix.bom.output
-                     tests/l-document-prefix.comment.input
-                     tests/l-document-prefix.comment.output
-                     tests/l-document-prefix.empty.input
-                     tests/l-document-prefix.empty.output
-                     tests/l-document-prefix.invalid.input
-                     tests/l-document-prefix.invalid.output
-                     tests/l-documents.explicit.input
-                     tests/l-documents.explicit.output
-                     tests/l-documents.implicit.input
-                     tests/l-documents.implicit.output
-                     tests/l-document-suffix.input
-                     tests/l-document-suffix.invalid.input
-                     tests/l-document-suffix.invalid.output
-                     tests/l-document-suffix.output
-                     tests/l-empty.n=4.s=literal.indent.input
-                     tests/l-empty.n=4.s=literal.indent-lt.input
-                     tests/l-empty.n=4.s=literal.indent-lt.output
-                     tests/l-empty.n=4.s=literal.indent.output
-                     tests/l-empty.n=4.s=literal.indent-sp.invalid.input
-                     tests/l-empty.n=4.s=literal.indent-sp.invalid.output
-                     tests/l-empty.n=4.s=plain.indent.input
-                     tests/l-empty.n=4.s=plain.indent-lt.input
-                     tests/l-empty.n=4.s=plain.indent-lt.output
-                     tests/l-empty.n=4.s=plain.indent.output
-                     tests/l-empty.n=4.s=plain.indent-sp.input
-                     tests/l-empty.n=4.s=plain.indent-sp.output
-                     tests/l-explicit-document.invalid.input
-                     tests/l-explicit-document.invalid.output
-                     tests/l-explicit-document.literal.input
-                     tests/l-explicit-document.literal.output
-                     tests/l-explicit-document.plain.input
-                     tests/l-explicit-document.plain.output
-                     tests/l-folded-content.n=4.t=strip.input
-                     tests/l-folded-content.n=4.t=strip.invalid.input
-                     tests/l-folded-content.n=4.t=strip.invalid.output
-                     tests/l-folded-content.n=4.t=strip.output
-                     tests/l-following-document.empty.input
-                     tests/l-following-document.empty.output
-                     tests/l-following-document.explicit.input
-                     tests/l-following-document.explicit.output
-                     tests/l-following-document.invalid.input
-                     tests/l-following-document.invalid.output
-                     tests/l-forbidden.end-space.input
-                     tests/l-forbidden.end-space.output
-                     tests/l-forbidden.invalid.input
-                     tests/l-forbidden.invalid.output
-                     tests/l-forbidden.start.input
-                     tests/l-forbidden.start-lf.input
-                     tests/l-forbidden.start-lf.output
-                     tests/l-forbidden.start.output
-                     tests/l-implicit-document.invalid.input
-                     tests/l-implicit-document.invalid.output
-                     tests/l-implicit-document.literal.input
-                     tests/l-implicit-document.literal.output
-                     tests/l-implicit-document.plain.input
-                     tests/l-implicit-document.plain.output
-                     tests/l-keep-empty.n=4.0.input
-                     tests/l-keep-empty.n=4.0.output
-                     tests/l-keep-empty.n=4.1.input
-                     tests/l-keep-empty.n=4.1.output
-                     tests/l-leading-document.empty.input
-                     tests/l-leading-document.empty.output
-                     tests/l-leading-document.explicit.input
-                     tests/l-leading-document.explicit.output
-                     tests/l-leading-document.implicit.input
-                     tests/l-leading-document.implicit.output
-                     tests/l-literal-content.n=4.t=strip.input
-                     tests/l-literal-content.n=4.t=strip.invalid.input
-                     tests/l-literal-content.n=4.t=strip.invalid.output
-                     tests/l-literal-content.n=4.t=strip.output
-                     tests/l-nb-folded-lines.n=4.input
-                     tests/l-nb-folded-lines.n=4.invalid.input
-                     tests/l-nb-folded-lines.n=4.invalid.output
-                     tests/l-nb-folded-lines.n=4.output
-                     tests/l-nb-literal-chars.n=4.input
-                     tests/l-nb-literal-chars.n=4.invalid.input
-                     tests/l-nb-literal-chars.n=4.invalid.output
-                     tests/l-nb-literal-chars.n=4.output
-                     tests/l-nb-spaced-lines.n=4.input
-                     tests/l-nb-spaced-lines.n=4.invalid.input
-                     tests/l-nb-spaced-lines.n=4.invalid.output
-                     tests/l-nb-spaced-lines.n=4.output
-                     tests/l-nb-start-with-any.n=4.folded.input
-                     tests/l-nb-start-with-any.n=4.folded.output
-                     tests/l-nb-start-with-any.n=4.invalid.input
-                     tests/l-nb-start-with-any.n=4.invalid.output
-                     tests/l-nb-start-with-any.n=4.spaced.input
-                     tests/l-nb-start-with-any.n=4.spaced.output
-                     tests/l-nb-start-with-folded.n=4.input
-                     tests/l-nb-start-with-folded.n=4.invalid.input
-                     tests/l-nb-start-with-folded.n=4.invalid.output
-                     tests/l-nb-start-with-folded.n=4.output
-                     tests/l-nb-start-with-spaced.n=4.input
-                     tests/l-nb-start-with-spaced.n=4.invalid.input
-                     tests/l-nb-start-with-spaced.n=4.invalid.output
-                     tests/l-nb-start-with-spaced.n=4.output
-                     tests/l-strip-empty.n=4.0.input
-                     tests/l-strip-empty.n=4.0.output
-                     tests/l-strip-empty.n=4.1.input
-                     tests/l-strip-empty.n=4.1.output
-                     tests/l-trail-comments.n=4.1.input
-                     tests/l-trail-comments.n=4.1.output
-                     tests/l-trail-comments.n=4.2.input
-                     tests/l-trail-comments.n=4.2.output
-                     tests/l-trail-comments.n=4.3.input
-                     tests/l-trail-comments.n=4.3.output
-                     tests/l-trail-comments.n=4.invalid.input
-                     tests/l-trail-comments.n=4.invalid.output
-                     tests/l-yaml-stream.empty.input
-                     tests/l-yaml-stream.empty.output
-                     tests/l-yaml-stream.explicit.input
-                     tests/l-yaml-stream.explicit.output
-                     tests/l-yaml-stream.implicit.input
-                     tests/l-yaml-stream.implicit.output tests/nb-char.input
-                     tests/nb-char.invalid.input tests/nb-char.invalid.output
-                     tests/nb-char.output tests/nb-double-char.a.input
-                     tests/nb-double-char.a.output
-                     tests/nb-double-char.backslash.invalid.input
-                     tests/nb-double-char.backslash.invalid.output
-                     tests/nb-double-char.double-quote.invalid.input
-                     tests/nb-double-char.double-quote.invalid.output
-                     tests/nb-double-char.escaped.input
-                     tests/nb-double-char.escaped.output
-                     tests/nb-double-text.n=4.c=flow-key.input
-                     tests/nb-double-text.n=4.c=flow-key.invalid.input
-                     tests/nb-double-text.n=4.c=flow-key.invalid.output
-                     tests/nb-double-text.n=4.c=flow-key.output
-                     tests/nb-double-text.n=4.c=flow-out.input
-                     tests/nb-double-text.n=4.c=flow-out.output
-                     tests/nb-plain-char.c=flow-in.invalid.input
-                     tests/nb-plain-char.c=flow-in.invalid.output
-                     tests/nb-plain-char.c=flow-in.space.input
-                     tests/nb-plain-char.c=flow-in.space.output
-                     tests/nb-plain-char.c=flow-out.a.input
-                     tests/nb-plain-char.c=flow-out.a.output
-                     tests/nb-plain-char.c=flow-out.comma.input
-                     tests/nb-plain-char.c=flow-out.comma.output
-                     tests/nb-single-char.escaped.input
-                     tests/nb-single-char.escaped.output
-                     tests/nb-single-char.invalid.input
-                     tests/nb-single-char.invalid.output
-                     tests/nb-single-text.n=4.c=flow-key.input
-                     tests/nb-single-text.n=4.c=flow-key.output
-                     tests/nb-single-text.n=4.c=flow-out.input
-                     tests/nb-single-text.n=4.c=flow-out.invalid.input
-                     tests/nb-single-text.n=4.c=flow-out.invalid.output
-                     tests/nb-single-text.n=4.c=flow-out.output
-                     tests/ns-anchor-char.input
-                     tests/ns-anchor-char.invalid.input
-                     tests/ns-anchor-char.invalid.output
-                     tests/ns-anchor-char.output tests/ns-anchor-name.input
-                     tests/ns-anchor-name.invalid.input
-                     tests/ns-anchor-name.invalid.output
-                     tests/ns-anchor-name.output tests/ns-ascii-letter.a.input
-                     tests/ns-ascii-letter.a.output
-                     tests/ns-ascii-letter.invalid.input
-                     tests/ns-ascii-letter.invalid.output
-                     tests/ns-ascii-letter.Z.input
-                     tests/ns-ascii-letter.Z.output tests/ns-char.input
-                     tests/ns-char.invalid.input tests/ns-char.invalid.output
-                     tests/ns-char.output tests/ns-dec-digit.0.input
-                     tests/ns-dec-digit.0.output tests/ns-dec-digit.1.input
-                     tests/ns-dec-digit.1.output tests/ns-dec-digit.2.input
-                     tests/ns-dec-digit.2.output tests/ns-dec-digit.3.input
-                     tests/ns-dec-digit.3.output tests/ns-dec-digit.4.input
-                     tests/ns-dec-digit.4.output tests/ns-dec-digit.5.input
-                     tests/ns-dec-digit.5.output tests/ns-dec-digit.6.input
-                     tests/ns-dec-digit.6.output tests/ns-dec-digit.7.input
-                     tests/ns-dec-digit.7.output tests/ns-dec-digit.8.input
-                     tests/ns-dec-digit.8.output tests/ns-dec-digit.9.input
-                     tests/ns-dec-digit.9.output
-                     tests/ns-dec-digit.invalid.input
-                     tests/ns-dec-digit.invalid.output
-                     tests/ns-directive-name.input
-                     tests/ns-directive-name.invalid.input
-                     tests/ns-directive-name.invalid.output
-                     tests/ns-directive-name.output
-                     tests/ns-directive-parameter.input
-                     tests/ns-directive-parameter.invalid.input
-                     tests/ns-directive-parameter.invalid.output
-                     tests/ns-directive-parameter.output
-                     tests/ns-double-char.input
-                     tests/ns-double-char.invalid.input
-                     tests/ns-double-char.invalid.output
-                     tests/ns-double-char.output tests/ns-esc-16-bit.input
-                     tests/ns-esc-16-bit.output tests/ns-esc-32-bit.input
-                     tests/ns-esc-32-bit.output tests/ns-esc-8-bit.input
-                     tests/ns-esc-8-bit.output tests/ns-esc-backslash.input
-                     tests/ns-esc-backslash.output tests/ns-esc-backspace.input
-                     tests/ns-esc-backspace.output tests/ns-esc-bell.input
-                     tests/ns-esc-bell.output
-                     tests/ns-esc-carriage-return.input
-                     tests/ns-esc-carriage-return.output
-                     tests/ns-esc-char.16-bit.input
-                     tests/ns-esc-char.16-bit.output
-                     tests/ns-esc-char.32-bit.input
-                     tests/ns-esc-char.32-bit.output
-                     tests/ns-esc-char.8-bit.input
-                     tests/ns-esc-char.8-bit.output
-                     tests/ns-esc-char.backslash.input
-                     tests/ns-esc-char.backslash.output
-                     tests/ns-esc-char.bell.input tests/ns-esc-char.bell.output
-                     tests/ns-esc-char.bs.input tests/ns-esc-char.bs.output
-                     tests/ns-esc-char.cr.input tests/ns-esc-char.cr.output
-                     tests/ns-esc-char.double-quote.input
-                     tests/ns-esc-char.double-quote.output
-                     tests/ns-esc-char.esc.input tests/ns-esc-char.esc.output
-                     tests/ns-esc-char.ff.input tests/ns-esc-char.ff.output
-                     tests/ns-esc-char.lf.input tests/ns-esc-char.lf.output
-                     tests/ns-esc-char.ls.input tests/ns-esc-char.ls.output
-                     tests/ns-esc-char.nbsp.input tests/ns-esc-char.nbsp.output
-                     tests/ns-esc-char.nl.input tests/ns-esc-char.nl.output
-                     tests/ns-esc-char.null.input tests/ns-esc-char.null.output
-                     tests/ns-esc-char.ps.input tests/ns-esc-char.ps.output
-                     tests/ns-esc-char.sp.input tests/ns-esc-char.sp.output
-                     tests/ns-esc-char.tab.input tests/ns-esc-char.tab.output
-                     tests/ns-esc-char.vt.input tests/ns-esc-char.vt.output
-                     tests/ns-esc-double-quote.input
-                     tests/ns-esc-double-quote.output tests/ns-esc-escape.input
-                     tests/ns-esc-escape.output tests/ns-esc-form-feed.input
-                     tests/ns-esc-form-feed.output
-                     tests/ns-esc-horizontal-tab.tab.input
-                     tests/ns-esc-horizontal-tab.tab.output
-                     tests/ns-esc-horizontal-tab.t.input
-                     tests/ns-esc-horizontal-tab.t.output
-                     tests/ns-esc-line-feed.input tests/ns-esc-line-feed.output
-                     tests/ns-esc-line-separator.input
-                     tests/ns-esc-line-separator.output
-                     tests/ns-esc-next-line.input tests/ns-esc-next-line.output
-                     tests/ns-esc-non-breaking-space.input
-                     tests/ns-esc-non-breaking-space.output
-                     tests/ns-esc-null.input tests/ns-esc-null.output
-                     tests/ns-esc-paragraph-separator.input
-                     tests/ns-esc-paragraph-separator.output
-                     tests/ns-esc-space.input tests/ns-esc-space.output
-                     tests/ns-esc-vertical-tab.input
-                     tests/ns-esc-vertical-tab.output
-                     tests/ns-flow-content.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-content.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-content.n=4.c=flow-in.json.input
-                     tests/ns-flow-content.n=4.c=flow-in.json.output
-                     tests/ns-flow-content.n=4.c=flow-in.yaml.input
-                     tests/ns-flow-content.n=4.c=flow-in.yaml.output
-                     tests/ns-flow-map-empty-key-entry-key-entry.n=4.c=flow-in.output
-                     tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.input
-                     tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.output
-                     tests/ns-flow-map-entry.n=4.c=flow-in.explicit.input
-                     tests/ns-flow-map-entry.n=4.c=flow-in.explicit.output
-                     tests/ns-flow-map-entry.n=4.c=flow-in.implicit.input
-                     tests/ns-flow-map-entry.n=4.c=flow-in.implicit.output
-                     tests/ns-flow-map-entry.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-map-entry.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.empty.input
-                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.empty.output
-                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.json.input
-                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.json.output
-                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.value.input
-                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.value.output
-                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.yaml.input
-                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.yaml.output
-                     tests/ns-flow-map-implicit-entry.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-map-implicit-entry.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.compact.input
-                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.compact.output
-                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.empty.input
-                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.empty.output
-                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.spaced.input
-                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.spaced.output
-                     tests/ns-flow-node.n=4.c=flow-in.alias.input
-                     tests/ns-flow-node.n=4.c=flow-in.alias.output
-                     tests/ns-flow-node.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-node.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-node.n=4.c=flow-in.tagged.input
-                     tests/ns-flow-node.n=4.c=flow-in.tagged.output
-                     tests/ns-flow-node.n=4.c=flow-in.tag.input
-                     tests/ns-flow-node.n=4.c=flow-in.tag.output
-                     tests/ns-flow-node.n=4.c=flow-in.untagged.input
-                     tests/ns-flow-node.n=4.c=flow-in.untagged.output
-                     tests/ns-flow-pair-entry.n=4.c=flow-in.empty.input
-                     tests/ns-flow-pair-entry.n=4.c=flow-in.empty.output
-                     tests/ns-flow-pair-entry.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-pair-entry.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-pair-entry.n=4.c=flow-in.json.input
-                     tests/ns-flow-pair-entry.n=4.c=flow-in.json.output
-                     tests/ns-flow-pair-entry.n=4.c=flow-in.yaml.input
-                     tests/ns-flow-pair-entry.n=4.c=flow-in.yaml.output
-                     tests/ns-flow-pair.n=4.c=flow-in.explicit.input
-                     tests/ns-flow-pair.n=4.c=flow-in.explicit.output
-                     tests/ns-flow-pair.n=4.c=flow-in.implicit.input
-                     tests/ns-flow-pair.n=4.c=flow-in.implicit.output
-                     tests/ns-flow-pair.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-pair.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-pair-yaml-key-entry.n=4.c=flow-in.input
-                     tests/ns-flow-pair-yaml-key-entry.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-pair-yaml-key-entry.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-pair-yaml-key-entry.n=4.c=flow-in.output
-                     tests/ns-flow-seq-entry.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-seq-entry.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-seq-entry.n=4.c=flow-in.node.input
-                     tests/ns-flow-seq-entry.n=4.c=flow-in.node.output
-                     tests/ns-flow-seq-entry.n=4.c=flow-in.pair.input
-                     tests/ns-flow-seq-entry.n=4.c=flow-in.pair.output
-                     tests/ns-flow-yaml-content.n=4.c=flow-in.input
-                     tests/ns-flow-yaml-content.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-yaml-content.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-yaml-content.n=4.c=flow-in.output
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.alias.input
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.alias.output
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.invalid.input
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.invalid.output
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.tagged.input
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.tagged.output
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.tag.input
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.tag.output
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.untagged.input
-                     tests/ns-flow-yaml-node.n=4.c=flow-in.untagged.output
-                     tests/ns-global-tag-prefix.input
-                     tests/ns-global-tag-prefix.invalid.input
-                     tests/ns-global-tag-prefix.invalid.output
-                     tests/ns-global-tag-prefix.output
-                     tests/ns-hex-digit.6.input tests/ns-hex-digit.6.output
-                     tests/ns-hex-digit.a.input tests/ns-hex-digit.a.output
-                     tests/ns-hex-digit.B.input tests/ns-hex-digit.B.output
-                     tests/ns-hex-digit.c.input tests/ns-hex-digit.c.output
-                     tests/ns-hex-digit.D.input tests/ns-hex-digit.D.output
-                     tests/ns-hex-digit.e.input tests/ns-hex-digit.e.output
-                     tests/ns-hex-digit.F.input tests/ns-hex-digit.F.output
-                     tests/ns-hex-digit.invalid.input
-                     tests/ns-hex-digit.invalid.output
-                     tests/ns-l-block-map-entry.n=2.explicit.input
-                     tests/ns-l-block-map-entry.n=2.explicit.output
-                     tests/ns-l-block-map-entry.n=2.implicit.input
-                     tests/ns-l-block-map-entry.n=2.implicit.output
-                     tests/ns-l-block-map-entry.n=2.invalid.input
-                     tests/ns-l-block-map-entry.n=2.invalid.output
-                     tests/ns-l-block-map-implicit-entry.n=2.empty.input
-                     tests/ns-l-block-map-implicit-entry.n=2.empty.output
-                     tests/ns-l-block-map-implicit-entry.n=2.invalid.input
-                     tests/ns-l-block-map-implicit-entry.n=2.invalid.output
-                     tests/ns-l-block-map-implicit-entry.n=2.non-empty.input
-                     tests/ns-l-block-map-implicit-entry.n=2.non-empty.output
-                     tests/ns-l-in-line-mapping.n=2.input
-                     tests/ns-l-in-line-mapping.n=2.invalid.input
-                     tests/ns-l-in-line-mapping.n=2.invalid.output
-                     tests/ns-l-in-line-mapping.n=2.output
-                     tests/ns-l-in-line-sequence.n=3.input
-                     tests/ns-l-in-line-sequence.n=3.invalid.input
-                     tests/ns-l-in-line-sequence.n=3.invalid.output
-                     tests/ns-l-in-line-sequence.n=3.output
-                     tests/ns-plain-char.c=flow-in.acc.input
-                     tests/ns-plain-char.c=flow-in.acc.output
-                     tests/ns-plain-char.c=flow-in.ac.input
-                     tests/ns-plain-char.c=flow-in.ac.output
-                     tests/ns-plain-char.c=flow-in.a.input
-                     tests/ns-plain-char.c=flow-in.a.output
-                     tests/ns-plain-char.c=flow-in.c.input
-                     tests/ns-plain-char.c=flow-in.c.output
-                     tests/ns-plain-char.c=flow-in.ma.input
-                     tests/ns-plain-char.c=flow-in.ma.output
-                     tests/ns-plain-char.c=flow-in.mc.input
-                     tests/ns-plain-char.c=flow-in.mc.output
-                     tests/ns-plain-char.c=flow-in.m.input
-                     tests/ns-plain-char.c=flow-in.mmcc.input
-                     tests/ns-plain-char.c=flow-in.mmcc.output
-                     tests/ns-plain-char.c=flow-in.mms.input
-                     tests/ns-plain-char.c=flow-in.mms.output
-                     tests/ns-plain-char.c=flow-in.m.output
-                     tests/ns-plain-char.c=flow-in.s.input
-                     tests/ns-plain-char.c=flow-in.s.output
-                     tests/ns-plain-first.c=flow-in.a.input
-                     tests/ns-plain-first.c=flow-in.a.output
-                     tests/ns-plain-first.c=flow-in.c.input
-                     tests/ns-plain-first.c=flow-in.c.output
-                     tests/ns-plain-first.c=flow-in.da.input
-                     tests/ns-plain-first.c=flow-in.da.output
-                     tests/ns-plain-first.c=flow-in.dc.input
-                     tests/ns-plain-first.c=flow-in.dc.output
-                     tests/ns-plain-first.c=flow-in.d.input
-                     tests/ns-plain-first.c=flow-in.d.output
-                     tests/ns-plain-first.c=flow-in.ds.input
-                     tests/ns-plain-first.c=flow-in.ds.output
-                     tests/ns-plain-first.c=flow-in.ia.input
-                     tests/ns-plain-first.c=flow-in.ia.output
-                     tests/ns-plain-first.c=flow-in.i.input
-                     tests/ns-plain-first.c=flow-in.i.output
-                     tests/ns-plain-first.c=flow-in.ka.input
-                     tests/ns-plain-first.c=flow-in.ka.output
-                     tests/ns-plain-first.c=flow-in.kc.input
-                     tests/ns-plain-first.c=flow-in.kc.output
-                     tests/ns-plain-first.c=flow-in.k.input
-                     tests/ns-plain-first.c=flow-in.k.output
-                     tests/ns-plain-first.c=flow-in.ks.input
-                     tests/ns-plain-first.c=flow-in.ks.output
-                     tests/ns-plain-first.c=flow-in.m.input
-                     tests/ns-plain-first.c=flow-in.m.output
-                     tests/ns-plain-first.c=flow-in.s.input
-                     tests/ns-plain-first.c=flow-in.s.output
-                     tests/ns-plain-first.c=flow-in.va.input
-                     tests/ns-plain-first.c=flow-in.va.output
-                     tests/ns-plain-first.c=flow-in.vc.input
-                     tests/ns-plain-first.c=flow-in.vc.output
-                     tests/ns-plain-first.c=flow-in.v.input
-                     tests/ns-plain-first.c=flow-in.v.output
-                     tests/ns-plain-first.c=flow-in.vs.input
-                     tests/ns-plain-first.c=flow-in.vs.output
-                     tests/ns-plain-first.c=flow-out.m.input
-                     tests/ns-plain-first.c=flow-out.m.output
-                     tests/ns-plain-multi.n=4.c=flow-in.input
-                     tests/ns-plain-multi.n=4.c=flow-in.invalid.input
-                     tests/ns-plain-multi.n=4.c=flow-in.invalid.output
-                     tests/ns-plain-multi.n=4.c=flow-in.output
-                     tests/ns-plain.n=4.c=flow-in.input
-                     tests/ns-plain.n=4.c=flow-in.output
-                     tests/ns-plain.n=4.c=flow-key.input
-                     tests/ns-plain.n=4.c=flow-key.invalid.input
-                     tests/ns-plain.n=4.c=flow-key.invalid.output
-                     tests/ns-plain.n=4.c=flow-key.output
-                     tests/ns-plain-safe.c=flow-in.mapping-start.input
-                     tests/ns-plain-safe.c=flow-in.mapping-start.output
-                     tests/ns-plain-safe.c=flow-in.v.input
-                     tests/ns-plain-safe.c=flow-in.v.output
-                     tests/ns-plain-safe.c=flow-out.a.input
-                     tests/ns-plain-safe.c=flow-out.a.output
-                     tests/ns-plain-safe.c=flow-out.c.input
-                     tests/ns-plain-safe.c=flow-out.c.output
-                     tests/ns-plain-safe.c=flow-out.mapping-start.input
-                     tests/ns-plain-safe.c=flow-out.mapping-start.output
-                     tests/ns-plain-safe-in.a.input
-                     tests/ns-plain-safe-in.a.output
-                     tests/ns-plain-safe-in.c.input
-                     tests/ns-plain-safe-in.c.output
-                     tests/ns-plain-safe-in.mapping-start.input
-                     tests/ns-plain-safe-in.mapping-start.output
-                     tests/ns-plain-safe-in.v.input
-                     tests/ns-plain-safe-in.v.output
-                     tests/ns-plain-safe-out.a.input
-                     tests/ns-plain-safe-out.a.output
-                     tests/ns-plain-safe-out.c.input
-                     tests/ns-plain-safe-out.c.output
-                     tests/ns-plain-safe-out.mapping-start.input
-                     tests/ns-plain-safe-out.mapping-start.output
-                     tests/ns-plain-safe-out.v.input
-                     tests/ns-plain-safe-out.v.output
-                     tests/ns-plain-single.c=flow-key.invalid.input
-                     tests/ns-plain-single.c=flow-key.invalid.output
-                     tests/ns-plain-single.c=flow-out.input
-                     tests/ns-plain-single.c=flow-out.output
-                     tests/ns-reserved-directive.input
-                     tests/ns-reserved-directive.invalid.input
-                     tests/ns-reserved-directive.invalid.output
-                     tests/ns-reserved-directive.output
-                     tests/ns-s-block-map-implicit-key.invalid.input
-                     tests/ns-s-block-map-implicit-key.invalid.output
-                     tests/ns-s-block-map-implicit-key.json.input
-                     tests/ns-s-block-map-implicit-key.json.output
-                     tests/ns-s-block-map-implicit-key.yaml.input
-                     tests/ns-s-block-map-implicit-key.yaml.output
-                     tests/ns-s-flow-map-entries.n=4.c=flow-in.invalid.input
-                     tests/ns-s-flow-map-entries.n=4.c=flow-in.invalid.output
-                     tests/ns-s-flow-map-entries.n=4.c=flow-in.multi.input
-                     tests/ns-s-flow-map-entries.n=4.c=flow-in.multi.output
-                     tests/ns-s-flow-map-entries.n=4.c=flow-in.single.input
-                     tests/ns-s-flow-map-entries.n=4.c=flow-in.single.output
-                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.invalid.input
-                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.invalid.output
-                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.multi.input
-                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.multi.output
-                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.single.input
-                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.single.output
-                     tests/ns-s-implicit-yaml-key.just.input
-                     tests/ns-s-implicit-yaml-key.just.output
-                     tests/ns-s-implicit-yaml-key.long.input
-                     tests/ns-s-implicit-yaml-key.long.output
-                     tests/ns-s-implicit-yaml-key.short.input
-                     tests/ns-s-implicit-yaml-key.short.output
-                     tests/ns-single-char.input
-                     tests/ns-single-char.invalid.input
-                     tests/ns-single-char.invalid.output
-                     tests/ns-single-char.output tests/ns-tag-char.input
-                     tests/ns-tag-char.invalid.input
-                     tests/ns-tag-char.invalid.output tests/ns-tag-char.output
-                     tests/ns-tag-directive.input
-                     tests/ns-tag-directive.invalid.input
-                     tests/ns-tag-directive.invalid.output
-                     tests/ns-tag-directive.output
-                     tests/ns-tag-prefix.global.input
-                     tests/ns-tag-prefix.global.output
-                     tests/ns-tag-prefix.invalid.input
-                     tests/ns-tag-prefix.invalid.output
-                     tests/ns-tag-prefix.local.input
-                     tests/ns-tag-prefix.local.output tests/ns-uri-char.6.input
-                     tests/ns-uri-char.6.output
-                     tests/ns-uri-char.ampersand.input
-                     tests/ns-uri-char.ampersand.output
-                     tests/ns-uri-char.asterisk.input
-                     tests/ns-uri-char.asterisk.output
-                     tests/ns-uri-char.at.input tests/ns-uri-char.at.output
-                     tests/ns-uri-char.colon.input
-                     tests/ns-uri-char.colon.output
-                     tests/ns-uri-char.comma.input
-                     tests/ns-uri-char.comma.output
-                     tests/ns-uri-char.dollar.input
-                     tests/ns-uri-char.dollar.output
-                     tests/ns-uri-char.equal.input
-                     tests/ns-uri-char.equal.output
-                     tests/ns-uri-char.escaped.input
-                     tests/ns-uri-char.escaped.output
-                     tests/ns-uri-char.exclamation.input
-                     tests/ns-uri-char.exclamation.output
-                     tests/ns-uri-char.hyphen.input
-                     tests/ns-uri-char.hyphen.output
-                     tests/ns-uri-char.invalid.input
-                     tests/ns-uri-char.invalid.output
-                     tests/ns-uri-char.left-round.input
-                     tests/ns-uri-char.left-round.output
-                     tests/ns-uri-char.left-square.input
-                     tests/ns-uri-char.left-square.output
-                     tests/ns-uri-char.n.input tests/ns-uri-char.n.output
-                     tests/ns-uri-char.period.input
-                     tests/ns-uri-char.period.output
-                     tests/ns-uri-char.plus.input tests/ns-uri-char.plus.output
-                     tests/ns-uri-char.question.input
-                     tests/ns-uri-char.question.output
-                     tests/ns-uri-char.right-round.input
-                     tests/ns-uri-char.right-round.output
-                     tests/ns-uri-char.right-square.input
-                     tests/ns-uri-char.right-square.output
-                     tests/ns-uri-char.semicolon.input
-                     tests/ns-uri-char.semicolon.output
-                     tests/ns-uri-char.single-quote.input
-                     tests/ns-uri-char.single-quote.output
-                     tests/ns-uri-char.slash.input
-                     tests/ns-uri-char.slash.output
-                     tests/ns-uri-char.tilde.input
-                     tests/ns-uri-char.tilde.output
-                     tests/ns-uri-char.underscore.input
-                     tests/ns-uri-char.underscore.output
-                     tests/ns-word-char.0.input tests/ns-word-char.0.output
-                     tests/ns-word-char.hyphen.input
-                     tests/ns-word-char.hyphen.output
-                     tests/ns-word-char.invalid.input
-                     tests/ns-word-char.invalid.output
-                     tests/ns-word-char.n.input tests/ns-word-char.n.output
-                     tests/ns-yaml-directive.input
-                     tests/ns-yaml-directive.invalid.input
-                     tests/ns-yaml-directive.invalid.output
-                     tests/ns-yaml-directive.output tests/ns-yaml-version.input
-                     tests/ns-yaml-version.invalid.input
-                     tests/ns-yaml-version.invalid.output
-                     tests/ns-yaml-version.output tests/s-b-comment.empty.input
-                     tests/s-b-comment.empty.output
-                     tests/s-b-comment.invalid.input
-                     tests/s-b-comment.invalid.output
-                     tests/s-b-comment.sol-text.input
-                     tests/s-b-comment.sol-text.output
-                     tests/s-b-comment.spaces.input
-                     tests/s-b-comment.spaces.output
-                     tests/s-b-comment.spaces-text.input
-                     tests/s-b-comment.spaces-text.output
-                     tests/s-b-double-escaped.input
-                     tests/s-b-double-escaped.invalid.input
-                     tests/s-b-double-escaped.invalid.output
-                     tests/s-b-double-escaped.output
-                     tests/s-double-multi.n=4.input
-                     tests/s-double-multi.n=4.invalid.input
-                     tests/s-double-multi.n=4.invalid.output
-                     tests/s-double-multi.n=4.output
-                     tests/s-ignored-prefix-block.n=4.input
-                     tests/s-ignored-prefix-block.n=4.invalid.input
-                     tests/s-ignored-prefix-block.n=4.invalid.output
-                     tests/s-ignored-prefix-block.n=4.output
-                     tests/s-ignored-prefix-flow.n=4.indent.input
-                     tests/s-ignored-prefix-flow.n=4.indent.output
-                     tests/s-ignored-prefix-flow.n=4.invalid.input
-                     tests/s-ignored-prefix-flow.n=4.invalid.output
-                     tests/s-ignored-prefix-flow.n=4.tab.input
-                     tests/s-ignored-prefix-flow.n=4.tab.output
-                     tests/s-ignored-prefix.n=4.s=double.input
-                     tests/s-ignored-prefix.n=4.s=double.output
-                     tests/s-ignored-prefix.n=4.s=folded.invalid.input
-                     tests/s-ignored-prefix.n=4.s=folded.invalid.output
-                     tests/s-ignored-prefix.n=4.s=literal.input
-                     tests/s-ignored-prefix.n=4.s=literal.output
-                     tests/s-ignored-prefix.n=4.s=plain.input
-                     tests/s-ignored-prefix.n=4.s=plain.output
-                     tests/s-ignored-prefix.n=4.s=single.input
-                     tests/s-ignored-prefix.n=4.s=single.output
-                     tests/s-indent-le.n=0.input tests/s-indent-le.n=0.output
-                     tests/s-indent-le.n=-1.invalid.input
-                     tests/s-indent-le.n=-1.invalid.output
-                     tests/s-indent-le.n=4.input
-                     tests/s-indent-le.n=4.invalid.input
-                     tests/s-indent-le.n=4.invalid.output
-                     tests/s-indent-le.n=4.output
-                     tests/s-indent-lt.n=0.invalid.input
-                     tests/s-indent-lt.n=0.invalid.output
-                     tests/s-indent-lt.n=-1.invalid.input
-                     tests/s-indent-lt.n=-1.invalid.output
-                     tests/s-indent-lt.n=4.input
-                     tests/s-indent-lt.n=4.invalid.input
-                     tests/s-indent-lt.n=4.invalid.output
-                     tests/s-indent-lt.n=4.output tests/s-indent.n=0.input
-                     tests/s-indent.n=0.output tests/s-indent.n=-1.input
-                     tests/s-indent.n=-1.output tests/s-indent.n=4.input
-                     tests/s-indent.n=4.invalid.input
-                     tests/s-indent.n=4.invalid.output
-                     tests/s-indent.n=4.output
-                     tests/s-l+block-collection.n=2.c=block-in.sequence.input
-                     tests/s-l+block-collection.n=2.c=block-in.sequence.output
-                     tests/s-l+block-collection.n=2.c=block-out.invalid.input
-                     tests/s-l+block-collection.n=2.c=block-out.invalid.output
-                     tests/s-l+block-collection.n=2.c=block-out.mapping.input
-                     tests/s-l+block-collection.n=2.c=block-out.mapping.output
-                     tests/s-l+block-in-block.n=2.c=block-out.invalid.input
-                     tests/s-l+block-in-block.n=2.c=block-out.invalid.output
-                     tests/s-l+block-in-block.n=2.c=block-out.tagged.input
-                     tests/s-l+block-in-block.n=2.c=block-out.tagged.output
-                     tests/s-l+block-in-block.n=2.c=block-out.untagged.input
-                     tests/s-l+block-in-block.n=2.c=block-out.untagged.output
-                     tests/s-l+block-indented.n=2.c=block-in.invalid.input
-                     tests/s-l+block-indented.n=2.c=block-in.invalid.output
-                     tests/s-l+block-indented.n=2.c=block-in.sequence.input
-                     tests/s-l+block-indented.n=2.c=block-in.sequence.output
-                     tests/s-l+block-indented.n=2.c=block-out.in-line-map.input
-                     tests/s-l+block-indented.n=2.c=block-out.in-line-map.output
-                     tests/s-l+block-indented.n=2.c=block-out.in-line-seq.input
-                     tests/s-l+block-indented.n=2.c=block-out.in-line-seq.output
-                     tests/s-l+block-indented.n=2.c=block-out.literal.input
-                     tests/s-l+block-indented.n=2.c=block-out.literal.output
-                     tests/s-l+block-indented.n=2.c=block-out.sequence.input
-                     tests/s-l+block-indented.n=2.c=block-out.sequence.output
-                     tests/s-l+block-node.n=0.c=block-in.invalid.input
-                     tests/s-l+block-node.n=0.c=block-in.invalid.output
-                     tests/s-l+block-node.n=-1.c=block-in.input
-                     tests/s-l+block-node.n=-1.c=block-in.output
-                     tests/s-l+block-node.n=-1.c=block-out.1.input
-                     tests/s-l+block-node.n=-1.c=block-out.1.output
-                     tests/s-l+block-node.n=-1.c=block-out.2.input
-                     tests/s-l+block-node.n=-1.c=block-out.2.output
-                     tests/s-l+block-node.n=-1.c=block-out.3.input
-                     tests/s-l+block-node.n=-1.c=block-out.3.output
-                     tests/s-l+block-node.n=-1.c=block-out.invalid.input
-                     tests/s-l+block-node.n=-1.c=block-out.invalid.output
-                     tests/s-l+block-node.n=2.c=block-out.block.input
-                     tests/s-l+block-node.n=2.c=block-out.block.output
-                     tests/s-l+block-node.n=2.c=block-out.flow.input
-                     tests/s-l+block-node.n=2.c=block-out.flow.output
-                     tests/s-l+block-node.n=2.c=block-out.invalid.input
-                     tests/s-l+block-node.n=2.c=block-out.invalid.output
-                     tests/s-l+block-scalar.n=2.c=block-out.folded.input
-                     tests/s-l+block-scalar.n=2.c=block-out.folded.output
-                     tests/s-l+block-scalar.n=2.c=block-out.literal.input
-                     tests/s-l+block-scalar.n=2.c=block-out.literal.output
-                     tests/s-l-comments.invalid.input
-                     tests/s-l-comments.invalid.output
-                     tests/s-l-comments.multi.input
-                     tests/s-l-comments.multi.output
-                     tests/s-l-comments.sol.input tests/s-l-comments.sol.output
-                     tests/s-l-double-any.n=4.escaped.input
-                     tests/s-l-double-any.n=4.escaped.output
-                     tests/s-l-double-any.n=4.folded.input
-                     tests/s-l-double-any.n=4.folded.output
-                     tests/s-l-double-any.n=4.invalid.input
-                     tests/s-l-double-any.n=4.invalid.output
-                     tests/s-l-flow-folded.n=4.invalid.input
-                     tests/s-l-flow-folded.n=4.invalid.output
-                     tests/s-l-flow-folded.n=4.lf.input
-                     tests/s-l-flow-folded.n=4.lf.output
-                     tests/s-l-flow-folded.n=4.sp-lf-lf.input
-                     tests/s-l-flow-folded.n=4.sp-lf-lf.output
-                     tests/s-l+flow-in-block.n=2.input
-                     tests/s-l+flow-in-block.n=2.invalid.input
-                     tests/s-l+flow-in-block.n=2.invalid.output
-                     tests/s-l+flow-in-block.n=2.output
-                     tests/s-nb-folded-text.n=4.input
-                     tests/s-nb-folded-text.n=4.invalid.input
-                     tests/s-nb-folded-text.n=4.invalid.output
-                     tests/s-nb-folded-text.n=4.output
-                     tests/s-nb-spaced-text.n=4.input
-                     tests/s-nb-spaced-text.n=4.invalid.input
-                     tests/s-nb-spaced-text.n=4.invalid.output
-                     tests/s-nb-spaced-text.n=4.output
-                     tests/s-ns-double-chars.input
-                     tests/s-ns-double-chars.invalid.input
-                     tests/s-ns-double-chars.invalid.output
-                     tests/s-ns-double-chars.output
-                     tests/s-ns-double-next.n=4.input
-                     tests/s-ns-double-next.n=4.invalid.input
-                     tests/s-ns-double-next.n=4.invalid.output
-                     tests/s-ns-double-next.n=4.output
-                     tests/s-ns-plain-chars.c=flow-in.input
-                     tests/s-ns-plain-chars.c=flow-in.invalid.input
-                     tests/s-ns-plain-chars.c=flow-in.invalid.output
-                     tests/s-ns-plain-chars.c=flow-in.output
-                     tests/s-ns-plain-next.n=4.c=flow-in.input
-                     tests/s-ns-plain-next.n=4.c=flow-in.invalid.input
-                     tests/s-ns-plain-next.n=4.c=flow-in.invalid.output
-                     tests/s-ns-plain-next.n=4.c=flow-in.output
-                     tests/s-ns-single-chars.input
-                     tests/s-ns-single-chars.invalid.input
-                     tests/s-ns-single-chars.invalid.output
-                     tests/s-ns-single-chars.output
-                     tests/s-ns-single-next.n=4.input
-                     tests/s-ns-single-next.n=4.invalid.input
-                     tests/s-ns-single-next.n=4.invalid.output
-                     tests/s-ns-single-next.n=4.output
-                     tests/s-separate-in-line.invalid.input
-                     tests/s-separate-in-line.invalid.output
-                     tests/s-separate-in-line.sol.input
-                     tests/s-separate-in-line.sol.output
-                     tests/s-separate-in-line.sp.input
-                     tests/s-separate-in-line.sp.output
-                     tests/s-separate-lines.n=4.invalid.input
-                     tests/s-separate-lines.n=4.invalid.output
-                     tests/s-separate-lines.n=4.lines.input
-                     tests/s-separate-lines.n=4.lines.output
-                     tests/s-separate-lines.n=4.sol.input
-                     tests/s-separate-lines.n=4.sol.output
-                     tests/s-separate-lines.n=4.sp.input
-                     tests/s-separate-lines.n=4.sp.output
-                     tests/s-separate.n=4.c=flow-key.empty.input
-                     tests/s-separate.n=4.c=flow-key.empty.output
-                     tests/s-separate.n=4.c=flow-key.invalid.input
-                     tests/s-separate.n=4.c=flow-key.invalid.output
-                     tests/s-separate.n=4.c=flow-key.sp.input
-                     tests/s-separate.n=4.c=flow-key.sp.output
-                     tests/s-separate.n=4.c=flow-out.empty.input
-                     tests/s-separate.n=4.c=flow-out.empty.output
-                     tests/s-separate.n=4.c=flow-out.line.input
-                     tests/s-separate.n=4.c=flow-out.line.output
-                     tests/s-separate.n=4.c=flow-out.sp.input
-                     tests/s-separate.n=4.c=flow-out.sp.output
-                     tests/s-single-multi.n=4.input
-                     tests/s-single-multi.n=4.invalid.input
-                     tests/s-single-multi.n=4.invalid.output
-                     tests/s-single-multi.n=4.output tests/s-space.input
-                     tests/s-space.invalid.input tests/s-space.invalid.output
-                     tests/s-space.output tests/s-tab.input
-                     tests/s-tab.invalid.input tests/s-tab.invalid.output
-                     tests/s-tab.output tests/s-white.invalid.input
-                     tests/s-white.invalid.output tests/s-white.sp.input
-                     tests/s-white.sp.output tests/s-white.tab.input
+Version:             0.9
+Cabal-Version:       >= 1.2
+License:             LGPL
+License-File:        lgpl.txt
+Copyright:           Oren Ben-Kiki 2007, 2008
+Author:              Oren Ben-Kiki
+Maintainer:          yaml-oren@ben-kiki.org
+Stability:           alpha
+Homepage:            http://www.ben-kiki.org/oren/YamlReference
+Package-Url:         http://www.ben-kiki.org/oren/YamlReference/YamlReference-0.9.tar.gz
+Category:            Text
+Synopsis:            YAML reference implementation
+Build-Type:          Custom
+Description:         This package contains \"the\" reference YAML syntax parser
+                     ("Text.Yaml.Reference"), generated directly from the YAML
+                     specifications, as well as sample program (@yaml2yeast@)
+                     that allows accessing it from the command line, converting
+                     YAML files to YEAST tokens. This is intended to be more of
+                     an \"executable specification\" for YAML rather than an
+                     actual basis for YAML tool chains. That said, it is
+                     possible to build interesting tools on top of it, such as
+                     the @yeast2html@ YAML syntax visualizer (contained in this
+                     package), pretty printers, etc. This is a streaming parser
+                     that will \"immediately\" begin to generate output. Updated
+                     to be compatible with the April 6, 2008 working draft.
+Extra-Source-Files:  Text/Yaml/Reference.bnf yeast2html yaml2yeast.css
+                     tests/b-as-line-feed.input tests/b-as-line-feed.output
+                     tests/b-carriage-return.input tests/b-carriage-return.output
+                     tests/b-char.cr.input tests/b-char.cr.output tests/b-char.invalid.input
+                     tests/b-char.invalid.output tests/b-char.lf.input tests/b-char.lf.output
+                     tests/b-char.ls.input tests/b-char.ls.output tests/b-char.nl.input
+                     tests/b-char.nl.output tests/b-char.ps.input tests/b-char.ps.output
+                     tests/b-chomped-last.t=clip.input tests/b-chomped-last.t=clip.invalid.input
+                     tests/b-chomped-last.t=clip.invalid.output tests/b-chomped-last.t=clip.output
+                     tests/b-chomped-last.t=keep.input tests/b-chomped-last.t=keep.output
+                     tests/b-chomped-last.t=strip.input tests/b-chomped-last.t=strip.output
+                     tests/b-generic.cr.input tests/b-generic.crlf.input tests/b-generic.crlf.output
+                     tests/b-generic.cr.output tests/b-generic.invalid.input
+                     tests/b-generic.invalid.output tests/b-generic.lf.input
+                     tests/b-generic.lf.output tests/b-generic.nl.input tests/b-generic.nl.output
+                     tests/b-l-folded-any.n=4.c=flow-in.as-space.input
+                     tests/b-l-folded-any.n=4.c=flow-in.as-space.output
+                     tests/b-l-folded-any.n=4.c=flow-in.invalid.input
+                     tests/b-l-folded-any.n=4.c=flow-in.invalid.output
+                     tests/b-l-folded-any.n=4.c=flow-in.specific.input
+                     tests/b-l-folded-any.n=4.c=flow-in.specific.output
+                     tests/b-l-folded-any.n=4.c=flow-in.trimmed.input
+                     tests/b-l-folded-any.n=4.c=flow-in.trimmed.output
+                     tests/b-l-folded-as-space.input tests/b-l-folded-as-space.invalid.input
+                     tests/b-l-folded-as-space.invalid.output tests/b-l-folded-as-space.output
+                     tests/b-l-folded-specific.n=4.c=flow-in.invalid.input
+                     tests/b-l-folded-specific.n=4.c=flow-in.invalid.output
+                     tests/b-l-folded-specific.n=4.c=flow-in.ls.input
+                     tests/b-l-folded-specific.n=4.c=flow-in.ls-lf-ls.input
+                     tests/b-l-folded-specific.n=4.c=flow-in.ls-lf-ls.output
+                     tests/b-l-folded-specific.n=4.c=flow-in.ls.output
+                     tests/b-l-folded-trimmed.n=4.c=flow-in.invalid.input
+                     tests/b-l-folded-trimmed.n=4.c=flow-in.invalid.output
+                     tests/b-l-folded-trimmed.n=4.c=flow-in.lf-ls-lf.input
+                     tests/b-l-folded-trimmed.n=4.c=flow-in.lf-ls-lf.output tests/b-line-feed.input
+                     tests/b-line-feed.output tests/b-line-separator.input
+                     tests/b-line-separator.output tests/b-l-spaced.n=4.input
+                     tests/b-l-spaced.n=4.invalid.input tests/b-l-spaced.n=4.invalid.output
+                     tests/b-l-spaced.n=4.output tests/b-nb-literal-next.n=4.input
+                     tests/b-nb-literal-next.n=4.invalid.input
+                     tests/b-nb-literal-next.n=4.invalid.output tests/b-nb-literal-next.n=4.output
+                     tests/b-next-line.input tests/b-next-line.output
+                     tests/b-non-content-any.invalid.input tests/b-non-content-any.invalid.output
+                     tests/b-non-content-any.lf.input tests/b-non-content-any.lf.output
+                     tests/b-non-content-any.ls.input tests/b-non-content-any.ls.output
+                     tests/b-non-content-generic.input tests/b-non-content-generic.output
+                     tests/b-normalized.invalid.input tests/b-normalized.invalid.output
+                     tests/b-normalized.lf.input tests/b-normalized.lf.output
+                     tests/b-normalized.ls.input tests/b-normalized.ls.output
+                     tests/b-paragraph-separator.input tests/b-paragraph-separator.output
+                     tests/b-specific.invalid.input tests/b-specific.invalid.output
+                     tests/b-specific.ls.input tests/b-specific.ls.output tests/b-specific.ps.input
+                     tests/b-specific.ps.output tests/c-alias.input tests/c-alias.output
+                     tests/c-anchor.input tests/c-anchor.output tests/c-b-block-header.n=2.e.input
+                     tests/c-b-block-header.n=2.e.output tests/c-b-block-header.n=2.im.input
+                     tests/c-b-block-header.n=2.im.output tests/c-b-block-header.n=2.imt.input
+                     tests/c-b-block-header.n=2.imt.output tests/c-b-block-header.n=2.it.input
+                     tests/c-b-block-header.n=2.itm.input tests/c-b-block-header.n=2.itm.output
+                     tests/c-b-block-header.n=2.it.output tests/c-byte-order-mark.invalid.input
+                     tests/c-byte-order-mark.invalid.output tests/c-byte-order-mark.utf16be.input
+                     tests/c-byte-order-mark.utf16be.output tests/c-byte-order-mark.utf16le.input
+                     tests/c-byte-order-mark.utf16le.output tests/c-byte-order-mark.utf8.input
+                     tests/c-byte-order-mark.utf8.output tests/c-chomping-indicator.empty.input
+                     tests/c-chomping-indicator.empty.output tests/c-chomping-indicator.hyphen.input
+                     tests/c-chomping-indicator.hyphen.output
+                     tests/c-chomping-indicator.invalid.input
+                     tests/c-chomping-indicator.invalid.output tests/c-chomping-indicator.plus.input
+                     tests/c-chomping-indicator.plus.output tests/c-collect-entry.input
+                     tests/c-collect-entry.output tests/c-comment.input tests/c-comment.output
+                     tests/c-directive.input tests/c-directive.output tests/c-document-end.input
+                     tests/c-document-end.invalid.input tests/c-document-end.invalid.output
+                     tests/c-document-end.output tests/c-document-start.input
+                     tests/c-document-start.invalid.input tests/c-document-start.invalid.output
+                     tests/c-document-start.output tests/c-double-quoted.n=4.c=flow-out.input
+                     tests/c-double-quoted.n=4.c=flow-out.invalid.input
+                     tests/c-double-quoted.n=4.c=flow-out.invalid.output
+                     tests/c-double-quoted.n=4.c=flow-out.output tests/c-double-quote.input
+                     tests/c-double-quote.output tests/c-escape.input tests/c-escape.invalid.input
+                     tests/c-escape.invalid.output tests/c-escape.output
+                     tests/c-flow-json-content.n=4.c=flow-in.double.input
+                     tests/c-flow-json-content.n=4.c=flow-in.double.output
+                     tests/c-flow-json-content.n=4.c=flow-in.invalid.input
+                     tests/c-flow-json-content.n=4.c=flow-in.invalid.output
+                     tests/c-flow-json-content.n=4.c=flow-in.mapping.input
+                     tests/c-flow-json-content.n=4.c=flow-in.mapping.output
+                     tests/c-flow-json-content.n=4.c=flow-in.sequence.input
+                     tests/c-flow-json-content.n=4.c=flow-in.sequence.output
+                     tests/c-flow-json-node.n=4.c=flow-in.invalid.input
+                     tests/c-flow-json-node.n=4.c=flow-in.invalid.output
+                     tests/c-flow-json-node.n=4.c=flow-in.tagged.input
+                     tests/c-flow-json-node.n=4.c=flow-in.tagged.output
+                     tests/c-flow-json-node.n=4.c=flow-in.untagged.input
+                     tests/c-flow-json-node.n=4.c=flow-in.untagged.output
+                     tests/c-flow-mapping.n=4.c=flow-in.compact.input
+                     tests/c-flow-mapping.n=4.c=flow-in.compact.output
+                     tests/c-flow-mapping.n=4.c=flow-in.invalid.input
+                     tests/c-flow-mapping.n=4.c=flow-in.invalid.output
+                     tests/c-flow-mapping.n=4.c=flow-in.long.input
+                     tests/c-flow-mapping.n=4.c=flow-in.long.output
+                     tests/c-flow-mapping.n=4.c=flow-in.spaced.input
+                     tests/c-flow-mapping.n=4.c=flow-in.spaced.output
+                     tests/c-flow-sequence.n=4.c=flow-in.compact.input
+                     tests/c-flow-sequence.n=4.c=flow-in.compact.output
+                     tests/c-flow-sequence.n=4.c=flow-in.invalid.input
+                     tests/c-flow-sequence.n=4.c=flow-in.invalid.output
+                     tests/c-flow-sequence.n=4.c=flow-in.spaced.input
+                     tests/c-flow-sequence.n=4.c=flow-in.spaced.output tests/c-folded.input
+                     tests/c-folded.output tests/c-indentation-indicator.n=0.input
+                     tests/c-indentation-indicator.n=0.invalid.input
+                     tests/c-indentation-indicator.n=0.invalid.output
+                     tests/c-indentation-indicator.n=0.output tests/c-indicator.alias.input
+                     tests/c-indicator.alias.output tests/c-indicator.anchor.input
+                     tests/c-indicator.anchor.output tests/c-indicator.collect-entry.input
+                     tests/c-indicator.collect-entry.output tests/c-indicator.comment.input
+                     tests/c-indicator.comment.output tests/c-indicator.directive.input
+                     tests/c-indicator.directive.output tests/c-indicator.double-quote.input
+                     tests/c-indicator.double-quote.output tests/c-indicator.folded.input
+                     tests/c-indicator.folded.output tests/c-indicator.invalid.input
+                     tests/c-indicator.invalid.output tests/c-indicator.literal.input
+                     tests/c-indicator.literal.output tests/c-indicator.mapping-end.input
+                     tests/c-indicator.mapping-end.output tests/c-indicator.mapping-key.input
+                     tests/c-indicator.mapping-key.output tests/c-indicator.mapping-start.input
+                     tests/c-indicator.mapping-start.output tests/c-indicator.mapping-value.input
+                     tests/c-indicator.mapping-value.output tests/c-indicator.reserved.at.input
+                     tests/c-indicator.reserved.at.output tests/c-indicator.reserved.backtick.input
+                     tests/c-indicator.reserved.backtick.output tests/c-indicator.sequence-end.input
+                     tests/c-indicator.sequence-end.output tests/c-indicator.sequence-entry.input
+                     tests/c-indicator.sequence-entry.output tests/c-indicator.sequence-start.input
+                     tests/c-indicator.sequence-start.output tests/c-indicator.single-quote.input
+                     tests/c-indicator.single-quote.output tests/c-indicator.tag.input
+                     tests/c-indicator.tag.output tests/c-l-block-map-explicit-entry.n=2.input
+                     tests/c-l-block-map-explicit-entry.n=2.invalid.input
+                     tests/c-l-block-map-explicit-entry.n=2.invalid.output
+                     tests/c-l-block-map-explicit-entry.n=2.output
+                     tests/c-l-block-map-explicit-key.n=2.input
+                     tests/c-l-block-map-explicit-key.n=2.invalid.input
+                     tests/c-l-block-map-explicit-key.n=2.invalid.output
+                     tests/c-l-block-map-explicit-key.n=2.output
+                     tests/c-l-block-map-implicit-value.n=2.empty.input
+                     tests/c-l-block-map-implicit-value.n=2.empty.output
+                     tests/c-l-block-map-implicit-value.n=2.invalid.input
+                     tests/c-l-block-map-implicit-value.n=2.invalid.output
+                     tests/c-l-block-map-implicit-value.n=2.plain.input
+                     tests/c-l-block-map-implicit-value.n=2.plain.output
+                     tests/c-l-block-seq-entry.n=2.input tests/c-l-block-seq-entry.n=2.invalid.input
+                     tests/c-l-block-seq-entry.n=2.invalid.output
+                     tests/c-l-block-seq-entry.n=2.output tests/c-l+folded.n=2.indent.input
+                     tests/c-l+folded.n=2.indent.output tests/c-l+folded.n=2.invalid.input
+                     tests/c-l+folded.n=2.invalid.output tests/c-l+folded.n=2.simple.input
+                     tests/c-l+folded.n=2.simple.output tests/c-literal.input tests/c-literal.output
+                     tests/c-l+literal.n=2.invalid.input tests/c-l+literal.n=2.invalid.output
+                     tests/c-l+literal.n=2.simple.input tests/c-l+literal.n=2.simple.output
+                     tests/c-l+literal.n=2.strip-indent.input
+                     tests/c-l+literal.n=2.strip-indent.output tests/c-l+literal.n=2.strip.input
+                     tests/c-l+literal.n=2.strip.output tests/c-mapping-end.input
+                     tests/c-mapping-end.output tests/c-mapping-key.input tests/c-mapping-key.output
+                     tests/c-mapping-start.input tests/c-mapping-start.output
+                     tests/c-mapping-value.input tests/c-mapping-value.output
+                     tests/c-named-tag-handle.input tests/c-named-tag-handle.invalid.input
+                     tests/c-named-tag-handle.invalid.output tests/c-named-tag-handle.output
+                     tests/c-nb-comment-text.comment.input tests/c-nb-comment-text.comment.output
+                     tests/c-nb-comment-text.comment-text.input
+                     tests/c-nb-comment-text.comment-text.output
+                     tests/c-nb-comment-text.invalid.input tests/c-nb-comment-text.invalid.output
+                     tests/c-non-specific-tag.input tests/c-non-specific-tag.invalid.input
+                     tests/c-non-specific-tag.invalid.output tests/c-non-specific-tag.output
+                     tests/c-ns-alias-node.input tests/c-ns-alias-node.output
+                     tests/c-ns-anchor-property.input tests/c-ns-anchor-property.invalid.input
+                     tests/c-ns-anchor-property.invalid.output tests/c-ns-anchor-property.output
+                     tests/c-ns-esc-char.16-bit.input tests/c-ns-esc-char.16-bit.output
+                     tests/c-ns-esc-char.32-bit.input tests/c-ns-esc-char.32-bit.output
+                     tests/c-ns-esc-char.8-bit.input tests/c-ns-esc-char.8-bit.output
+                     tests/c-ns-esc-char.backslash.input tests/c-ns-esc-char.backslash.output
+                     tests/c-ns-esc-char.bell.input tests/c-ns-esc-char.bell.output
+                     tests/c-ns-esc-char.bs.input tests/c-ns-esc-char.bs.output
+                     tests/c-ns-esc-char.cr.input tests/c-ns-esc-char.cr.output
+                     tests/c-ns-esc-char.double-quote.input tests/c-ns-esc-char.double-quote.output
+                     tests/c-ns-esc-char.esc.input tests/c-ns-esc-char.esc.output
+                     tests/c-ns-esc-char.ff.input tests/c-ns-esc-char.ff.output
+                     tests/c-ns-esc-char.lf.input tests/c-ns-esc-char.lf.output
+                     tests/c-ns-esc-char.ls.input tests/c-ns-esc-char.ls.output
+                     tests/c-ns-esc-char.nbsp.input tests/c-ns-esc-char.nbsp.output
+                     tests/c-ns-esc-char.nl.input tests/c-ns-esc-char.nl.output
+                     tests/c-ns-esc-char.null.input tests/c-ns-esc-char.null.output
+                     tests/c-ns-esc-char.ps.input tests/c-ns-esc-char.ps.output
+                     tests/c-ns-esc-char.sp.input tests/c-ns-esc-char.sp.output
+                     tests/c-ns-esc-char.tab.input tests/c-ns-esc-char.tab.output
+                     tests/c-ns-esc-char.vt.input tests/c-ns-esc-char.vt.output
+                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.compact.input
+                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.compact.output
+                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.empty.input
+                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.empty.output
+                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.invalid.input
+                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.invalid.output
+                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.spaced.input
+                     tests/c-ns-flow-map-adjacent-value.n=4.c=flow-in.spaced.output
+                     tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.input
+                     tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.input
+                     tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.output
+                     tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.output
+                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.compact.input
+                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.compact.output
+                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.empty.input
+                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.empty.output
+                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.invalid.input
+                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.invalid.output
+                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.spaced.input
+                     tests/c-ns-flow-map-json-key-entry.n=4.c=flow-in.spaced.output
+                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.empty.input
+                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.empty.output
+                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.invalid.input
+                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.invalid.output
+                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.value.input
+                     tests/c-ns-flow-map-separate-value.n=4.c=flow-in.value.output
+                     tests/c-ns-flow-pair-json-key-entry.n=4.c=flow-in.input
+                     tests/c-ns-flow-pair-json-key-entry.n=4.c=flow-in.invalid.input
+                     tests/c-ns-flow-pair-json-key-entry.n=4.c=flow-in.invalid.output
+                     tests/c-ns-flow-pair-json-key-entry.n=4.c=flow-in.output
+                     tests/c-ns-local-tag-prefix.input tests/c-ns-local-tag-prefix.invalid.input
+                     tests/c-ns-local-tag-prefix.invalid.output tests/c-ns-local-tag-prefix.output
+                     tests/c-ns-properties.n=0.c=block-in.input
+                     tests/c-ns-properties.n=0.c=block-in.invalid.input
+                     tests/c-ns-properties.n=0.c=block-in.invalid.output
+                     tests/c-ns-properties.n=0.c=block-in.output
+                     tests/c-ns-properties.n=0.c=block-out.input
+                     tests/c-ns-properties.n=0.c=block-out.output
+                     tests/c-ns-properties.n=0.c=flow-out.input
+                     tests/c-ns-properties.n=0.c=flow-out.invalid.input
+                     tests/c-ns-properties.n=0.c=flow-out.invalid.output
+                     tests/c-ns-properties.n=0.c=flow-out.output
+                     tests/c-ns-shorthand-tag.invalid.input tests/c-ns-shorthand-tag.invalid.output
+                     tests/c-ns-shorthand-tag.named.input tests/c-ns-shorthand-tag.named.output
+                     tests/c-ns-shorthand-tag.primary.input tests/c-ns-shorthand-tag.primary.output
+                     tests/c-ns-shorthand-tag.secondary.input
+                     tests/c-ns-shorthand-tag.secondary.output tests/c-ns-tag-property.invalid.input
+                     tests/c-ns-tag-property.invalid.output
+                     tests/c-ns-tag-property.non-specific.input
+                     tests/c-ns-tag-property.non-specific.output
+                     tests/c-ns-tag-property.shorthand.input
+                     tests/c-ns-tag-property.shorthand.output tests/c-ns-tag-property.verbatim.input
+                     tests/c-ns-tag-property.verbatim.output tests/count-spaces.n=0.0.input
+                     tests/count-spaces.n=0.0.output tests/count-spaces.n=0.1.input
+                     tests/count-spaces.n=0.1.output tests/count-spaces.n=0.2.input
+                     tests/count-spaces.n=0.2.output tests/count-spaces.n=-1.0.input
+                     tests/count-spaces.n=1.0.input tests/count-spaces.n=-1.0.output
+                     tests/count-spaces.n=1.0.output tests/count-spaces.n=-1.1.input
+                     tests/count-spaces.n=1.1.input tests/count-spaces.n=-1.1.output
+                     tests/count-spaces.n=1.1.output tests/count-spaces.n=-1.2.input
+                     tests/count-spaces.n=1.2.input tests/count-spaces.n=-1.2.output
+                     tests/count-spaces.n=1.2.output tests/c-primary-tag-handle.input
+                     tests/c-primary-tag-handle.invalid.input
+                     tests/c-primary-tag-handle.invalid.output tests/c-primary-tag-handle.output
+                     tests/c-printable.10000.input tests/c-printable.10000.output
+                     tests/c-printable.10ffff.input tests/c-printable.10ffff.output
+                     tests/c-printable.cr.input tests/c-printable.cr.output
+                     tests/c-printable.d7ff.input tests/c-printable.d7ff.output
+                     tests/c-printable.e000.input tests/c-printable.e000.output
+                     tests/c-printable.fffd.input tests/c-printable.fffd.output
+                     tests/c-printable.invalid.input tests/c-printable.invalid.output
+                     tests/c-printable.lf.input tests/c-printable.lf.output
+                     tests/c-printable.nbsp.input tests/c-printable.nbsp.output
+                     tests/c-printable.nel.input tests/c-printable.nel.output
+                     tests/c-printable.sp.input tests/c-printable.sp.output
+                     tests/c-printable.tab.input tests/c-printable.tab.output
+                     tests/c-printable.tilde.input tests/c-printable.tilde.output
+                     tests/c-quoted-quote.input tests/c-quoted-quote.invalid.input
+                     tests/c-quoted-quote.invalid.output tests/c-quoted-quote.output
+                     tests/c-reserved.at.input tests/c-reserved.at.output
+                     tests/c-reserved.backtick.input tests/c-reserved.backtick.output
+                     tests/c-secondary-tag-handle.input tests/c-secondary-tag-handle.invalid.input
+                     tests/c-secondary-tag-handle.invalid.output tests/c-secondary-tag-handle.output
+                     tests/c-sequence-end.input tests/c-sequence-end.output
+                     tests/c-sequence-entry.input tests/c-sequence-entry.output
+                     tests/c-sequence-start.input tests/c-sequence-start.output
+                     tests/c-s-implicit-json-key.just.input tests/c-s-implicit-json-key.just.output
+                     tests/c-s-implicit-json-key.long.input tests/c-s-implicit-json-key.long.output
+                     tests/c-s-implicit-json-key.short.input
+                     tests/c-s-implicit-json-key.short.output
+                     tests/c-single-quoted.n=4.c=flow-out.input
+                     tests/c-single-quoted.n=4.c=flow-out.invalid.input
+                     tests/c-single-quoted.n=4.c=flow-out.invalid.output
+                     tests/c-single-quoted.n=4.c=flow-out.output tests/c-single-quote.input
+                     tests/c-single-quote.output tests/c-tag-handle.invalid.input
+                     tests/c-tag-handle.invalid.output tests/c-tag-handle.named.input
+                     tests/c-tag-handle.named.output tests/c-tag-handle.primary.input
+                     tests/c-tag-handle.primary.output tests/c-tag-handle.secondary.input
+                     tests/c-tag-handle.secondary.output tests/c-tag.input tests/c-tag.output
+                     tests/c-verbatim-tag.input tests/c-verbatim-tag.invalid.input
+                     tests/c-verbatim-tag.invalid.output tests/c-verbatim-tag.output
+                     tests/detect-collection-indentation.n=1.input
+                     tests/detect-collection-indentation.n=1.output
+                     tests/detect-inline-indentation.input tests/detect-inline-indentation.output
+                     tests/detect-scalar-indentation.n=2.input
+                     tests/detect-scalar-indentation.n=2.output tests/e-node.input
+                     tests/e-node.output tests/e-scalar.input tests/e-scalar.output
+                     tests/l-block-map-explicit-value.n=2.input
+                     tests/l-block-map-explicit-value.n=2.invalid.input
+                     tests/l-block-map-explicit-value.n=2.invalid.output
+                     tests/l-block-map-explicit-value.n=2.output tests/l+block-mapping.n=-1.input
+                     tests/l+block-mapping.n=1.input tests/l+block-mapping.n=-1.output
+                     tests/l+block-mapping.n=1.output tests/l+block-mapping.n=2.invalid.input
+                     tests/l+block-mapping.n=2.invalid.output tests/l+block-sequence.n=1.input
+                     tests/l+block-sequence.n=1.output tests/l+block-sequence.n=2.invalid.input
+                     tests/l+block-sequence.n=2.invalid.output
+                     tests/l-chomped-empty.n=4.t=clip.input tests/l-chomped-empty.n=4.t=clip.output
+                     tests/l-chomped-empty.n=4.t=keep.input tests/l-chomped-empty.n=4.t=keep.output
+                     tests/l-chomped-empty.n=4.t=strip.input
+                     tests/l-chomped-empty.n=4.t=strip.output tests/l-comment.empty.input
+                     tests/l-comment.empty.output tests/l-comment.invalid.input
+                     tests/l-comment.invalid.output tests/l-comment.spaces-comment.input
+                     tests/l-comment.spaces-comment.output tests/l-directive.invalid.input
+                     tests/l-directive.invalid.output tests/l-directive.reserved.input
+                     tests/l-directive.reserved.output tests/l-directive.tag.input
+                     tests/l-directive.tag.invalid.input tests/l-directive.tag.invalid.output
+                     tests/l-directive.tag.output tests/l-directive.yaml.input
+                     tests/l-directive.yaml.invalid.input tests/l-directive.yaml.invalid.output
+                     tests/l-directive.yaml.output tests/l-document-prefix.bom-comment.input
+                     tests/l-document-prefix.bom-comment.output tests/l-document-prefix.bom.input
+                     tests/l-document-prefix.bom.output tests/l-document-prefix.comment.input
+                     tests/l-document-prefix.comment.output tests/l-document-prefix.empty.input
+                     tests/l-document-prefix.empty.output tests/l-document-prefix.invalid.input
+                     tests/l-document-prefix.invalid.output tests/l-documents.explicit.input
+                     tests/l-documents.explicit.output tests/l-documents.implicit.input
+                     tests/l-documents.implicit.output tests/l-document-suffix.input
+                     tests/l-document-suffix.invalid.input tests/l-document-suffix.invalid.output
+                     tests/l-document-suffix.output tests/l-empty.n=4.c=block-in.indent.input
+                     tests/l-empty.n=4.c=block-in.indent-lt.input
+                     tests/l-empty.n=4.c=block-in.indent-lt.output
+                     tests/l-empty.n=4.c=block-in.indent.output
+                     tests/l-empty.n=4.c=block-in.indent-sp.invalid.input
+                     tests/l-empty.n=4.c=block-in.indent-sp.invalid.output
+                     tests/l-empty.n=4.c=flow-in.indent.input
+                     tests/l-empty.n=4.c=flow-in.indent-lt.input
+                     tests/l-empty.n=4.c=flow-in.indent-lt.output
+                     tests/l-empty.n=4.c=flow-in.indent.output
+                     tests/l-empty.n=4.c=flow-in.indent-sp.input
+                     tests/l-empty.n=4.c=flow-in.indent-sp.output
+                     tests/l-explicit-document.invalid.input
+                     tests/l-explicit-document.invalid.output
+                     tests/l-explicit-document.literal.input
+                     tests/l-explicit-document.literal.output tests/l-explicit-document.plain.input
+                     tests/l-explicit-document.plain.output tests/l-folded-content.n=4.t=strip.input
+                     tests/l-folded-content.n=4.t=strip.invalid.input
+                     tests/l-folded-content.n=4.t=strip.invalid.output
+                     tests/l-folded-content.n=4.t=strip.output
+                     tests/l-following-document.empty.input tests/l-following-document.empty.output
+                     tests/l-following-document.explicit.input
+                     tests/l-following-document.explicit.output
+                     tests/l-following-document.invalid.input
+                     tests/l-following-document.invalid.output tests/l-forbidden.end-space.input
+                     tests/l-forbidden.end-space.output tests/l-forbidden.invalid.input
+                     tests/l-forbidden.invalid.output tests/l-forbidden.start.input
+                     tests/l-forbidden.start-lf.input tests/l-forbidden.start-lf.output
+                     tests/l-forbidden.start.output tests/l-implicit-document.invalid.input
+                     tests/l-implicit-document.invalid.output
+                     tests/l-implicit-document.literal.input
+                     tests/l-implicit-document.literal.output tests/l-implicit-document.plain.input
+                     tests/l-implicit-document.plain.output tests/l-keep-empty.n=4.0.input
+                     tests/l-keep-empty.n=4.0.output tests/l-keep-empty.n=4.1.input
+                     tests/l-keep-empty.n=4.1.output tests/l-leading-document.empty.input
+                     tests/l-leading-document.empty.output tests/l-leading-document.explicit.input
+                     tests/l-leading-document.explicit.output
+                     tests/l-leading-document.implicit.input
+                     tests/l-leading-document.implicit.output
+                     tests/l-literal-content.n=4.t=strip.input
+                     tests/l-literal-content.n=4.t=strip.invalid.input
+                     tests/l-literal-content.n=4.t=strip.invalid.output
+                     tests/l-literal-content.n=4.t=strip.output tests/l-nb-diff-lines.n=3.input
+                     tests/l-nb-diff-lines.n=3.output tests/l-nb-folded-lines.n=4.input
+                     tests/l-nb-folded-lines.n=4.invalid.input
+                     tests/l-nb-folded-lines.n=4.invalid.output tests/l-nb-folded-lines.n=4.output
+                     tests/l-nb-literal-text.n=4.input tests/l-nb-literal-text.n=4.invalid.input
+                     tests/l-nb-literal-text.n=4.invalid.output tests/l-nb-literal-text.n=4.output
+                     tests/l-nb-same-lines.n=3.input tests/l-nb-same-lines.n=3.output
+                     tests/l-nb-same-lines.n=4.input tests/l-nb-same-lines.n=4.output
+                     tests/l-nb-spaced-lines.n=4.input tests/l-nb-spaced-lines.n=4.invalid.input
+                     tests/l-nb-spaced-lines.n=4.invalid.output tests/l-nb-spaced-lines.n=4.output
+                     tests/l-strip-empty.n=4.0.input tests/l-strip-empty.n=4.0.output
+                     tests/l-strip-empty.n=4.1.input tests/l-strip-empty.n=4.1.output
+                     tests/l-trail-comments.n=4.1.input tests/l-trail-comments.n=4.1.output
+                     tests/l-trail-comments.n=4.2.input tests/l-trail-comments.n=4.2.output
+                     tests/l-trail-comments.n=4.3.input tests/l-trail-comments.n=4.3.output
+                     tests/l-trail-comments.n=4.invalid.input
+                     tests/l-trail-comments.n=4.invalid.output tests/l-yaml-stream.empty.input
+                     tests/l-yaml-stream.empty.output tests/l-yaml-stream.explicit.input
+                     tests/l-yaml-stream.explicit.output tests/l-yaml-stream.implicit.input
+                     tests/l-yaml-stream.implicit.output tests/nb-char.input
+                     tests/nb-char.invalid.input tests/nb-char.invalid.output tests/nb-char.output
+                     tests/nb-double-char.a.input tests/nb-double-char.a.output
+                     tests/nb-double-char.backslash.invalid.input
+                     tests/nb-double-char.backslash.invalid.output
+                     tests/nb-double-char.double-quote.invalid.input
+                     tests/nb-double-char.double-quote.invalid.output
+                     tests/nb-double-char.escaped.input tests/nb-double-char.escaped.output
+                     tests/nb-double-multi-line.n=4.input
+                     tests/nb-double-multi-line.n=4.invalid.input
+                     tests/nb-double-multi-line.n=4.invalid.output
+                     tests/nb-double-multi-line.n=4.output tests/nb-double-one-line.input
+                     tests/nb-double-one-line.output tests/nb-double-text.n=4.c=flow-key.input
+                     tests/nb-double-text.n=4.c=flow-key.invalid.input
+                     tests/nb-double-text.n=4.c=flow-key.invalid.output
+                     tests/nb-double-text.n=4.c=flow-key.output
+                     tests/nb-double-text.n=4.c=flow-out.input
+                     tests/nb-double-text.n=4.c=flow-out.output tests/nb-ns-double-in-line.input
+                     tests/nb-ns-double-in-line.invalid.input
+                     tests/nb-ns-double-in-line.invalid.output tests/nb-ns-double-in-line.output
+                     tests/nb-ns-plain-in-line.c=flow-in.input
+                     tests/nb-ns-plain-in-line.c=flow-in.invalid.input
+                     tests/nb-ns-plain-in-line.c=flow-in.invalid.output
+                     tests/nb-ns-plain-in-line.c=flow-in.output tests/nb-ns-single-in-line.input
+                     tests/nb-ns-single-in-line.invalid.input
+                     tests/nb-ns-single-in-line.invalid.output tests/nb-ns-single-in-line.output
+                     tests/nb-plain-char.c=flow-in.invalid.input
+                     tests/nb-plain-char.c=flow-in.invalid.output
+                     tests/nb-plain-char.c=flow-in.space.input
+                     tests/nb-plain-char.c=flow-in.space.output
+                     tests/nb-plain-char.c=flow-out.a.input tests/nb-plain-char.c=flow-out.a.output
+                     tests/nb-plain-char.c=flow-out.comma.input
+                     tests/nb-plain-char.c=flow-out.comma.output tests/nb-single-char.escaped.input
+                     tests/nb-single-char.escaped.output tests/nb-single-char.invalid.input
+                     tests/nb-single-char.invalid.output tests/nb-single-multi-line.n=4.input
+                     tests/nb-single-multi-line.n=4.invalid.input
+                     tests/nb-single-multi-line.n=4.invalid.output
+                     tests/nb-single-multi-line.n=4.output tests/nb-single-one-line.input
+                     tests/nb-single-one-line.output tests/nb-single-text.n=4.c=flow-key.input
+                     tests/nb-single-text.n=4.c=flow-key.output
+                     tests/nb-single-text.n=4.c=flow-out.input
+                     tests/nb-single-text.n=4.c=flow-out.invalid.input
+                     tests/nb-single-text.n=4.c=flow-out.invalid.output
+                     tests/nb-single-text.n=4.c=flow-out.output tests/ns-anchor-char.input
+                     tests/ns-anchor-char.invalid.input tests/ns-anchor-char.invalid.output
+                     tests/ns-anchor-char.output tests/ns-anchor-name.input
+                     tests/ns-anchor-name.invalid.input tests/ns-anchor-name.invalid.output
+                     tests/ns-anchor-name.output tests/ns-ascii-letter.a.input
+                     tests/ns-ascii-letter.a.output tests/ns-ascii-letter.invalid.input
+                     tests/ns-ascii-letter.invalid.output tests/ns-ascii-letter.Z.input
+                     tests/ns-ascii-letter.Z.output tests/ns-char.input tests/ns-char.invalid.input
+                     tests/ns-char.invalid.output tests/ns-char.output tests/ns-dec-digit.0.input
+                     tests/ns-dec-digit.0.output tests/ns-dec-digit.1.input
+                     tests/ns-dec-digit.1.output tests/ns-dec-digit.2.input
+                     tests/ns-dec-digit.2.output tests/ns-dec-digit.3.input
+                     tests/ns-dec-digit.3.output tests/ns-dec-digit.4.input
+                     tests/ns-dec-digit.4.output tests/ns-dec-digit.5.input
+                     tests/ns-dec-digit.5.output tests/ns-dec-digit.6.input
+                     tests/ns-dec-digit.6.output tests/ns-dec-digit.7.input
+                     tests/ns-dec-digit.7.output tests/ns-dec-digit.8.input
+                     tests/ns-dec-digit.8.output tests/ns-dec-digit.9.input
+                     tests/ns-dec-digit.9.output tests/ns-dec-digit.invalid.input
+                     tests/ns-dec-digit.invalid.output tests/ns-directive-name.input
+                     tests/ns-directive-name.invalid.input tests/ns-directive-name.invalid.output
+                     tests/ns-directive-name.output tests/ns-directive-parameter.input
+                     tests/ns-directive-parameter.invalid.input
+                     tests/ns-directive-parameter.invalid.output tests/ns-directive-parameter.output
+                     tests/ns-double-char.input tests/ns-double-char.invalid.input
+                     tests/ns-double-char.invalid.output tests/ns-double-char.output
+                     tests/ns-esc-16-bit.input tests/ns-esc-16-bit.output tests/ns-esc-32-bit.input
+                     tests/ns-esc-32-bit.output tests/ns-esc-8-bit.input tests/ns-esc-8-bit.output
+                     tests/ns-esc-backslash.input tests/ns-esc-backslash.output
+                     tests/ns-esc-backspace.input tests/ns-esc-backspace.output
+                     tests/ns-esc-bell.input tests/ns-esc-bell.output
+                     tests/ns-esc-carriage-return.input tests/ns-esc-carriage-return.output
+                     tests/ns-esc-double-quote.input tests/ns-esc-double-quote.output
+                     tests/ns-esc-escape.input tests/ns-esc-escape.output
+                     tests/ns-esc-form-feed.input tests/ns-esc-form-feed.output
+                     tests/ns-esc-horizontal-tab.tab.input tests/ns-esc-horizontal-tab.tab.output
+                     tests/ns-esc-horizontal-tab.t.input tests/ns-esc-horizontal-tab.t.output
+                     tests/ns-esc-line-feed.input tests/ns-esc-line-feed.output
+                     tests/ns-esc-line-separator.input tests/ns-esc-line-separator.output
+                     tests/ns-esc-next-line.input tests/ns-esc-next-line.output
+                     tests/ns-esc-non-breaking-space.input tests/ns-esc-non-breaking-space.output
+                     tests/ns-esc-null.input tests/ns-esc-null.output
+                     tests/ns-esc-paragraph-separator.input tests/ns-esc-paragraph-separator.output
+                     tests/ns-esc-space.input tests/ns-esc-space.output
+                     tests/ns-esc-vertical-tab.input tests/ns-esc-vertical-tab.output
+                     tests/ns-flow-content.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-content.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-content.n=4.c=flow-in.json.input
+                     tests/ns-flow-content.n=4.c=flow-in.json.output
+                     tests/ns-flow-content.n=4.c=flow-in.yaml.input
+                     tests/ns-flow-content.n=4.c=flow-in.yaml.output
+                     tests/ns-flow-map-empty-key-entry-key-entry.n=4.c=flow-in.output
+                     tests/ns-flow-map-entry.n=4.c=flow-in.explicit.input
+                     tests/ns-flow-map-entry.n=4.c=flow-in.explicit.output
+                     tests/ns-flow-map-entry.n=4.c=flow-in.implicit.input
+                     tests/ns-flow-map-entry.n=4.c=flow-in.implicit.output
+                     tests/ns-flow-map-entry.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-map-entry.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.empty.input
+                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.empty.output
+                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.json.input
+                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.json.output
+                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.value.input
+                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.value.output
+                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.yaml.input
+                     tests/ns-flow-map-explicit-entry.n=4.c=flow-in.yaml.output
+                     tests/ns-flow-map-implicit-entry.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-map-implicit-entry.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.compact.input
+                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.compact.output
+                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.empty.input
+                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.empty.output
+                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.spaced.input
+                     tests/ns-flow-map-yaml-key-entry.n=4.c=flow-in.spaced.output
+                     tests/ns-flow-node.n=4.c=flow-in.alias.input
+                     tests/ns-flow-node.n=4.c=flow-in.alias.output
+                     tests/ns-flow-node.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-node.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-node.n=4.c=flow-in.tagged.input
+                     tests/ns-flow-node.n=4.c=flow-in.tagged.output
+                     tests/ns-flow-node.n=4.c=flow-in.tag.input
+                     tests/ns-flow-node.n=4.c=flow-in.tag.output
+                     tests/ns-flow-node.n=4.c=flow-in.untagged.input
+                     tests/ns-flow-node.n=4.c=flow-in.untagged.output
+                     tests/ns-flow-pair-entry.n=4.c=flow-in.empty.input
+                     tests/ns-flow-pair-entry.n=4.c=flow-in.empty.output
+                     tests/ns-flow-pair-entry.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-pair-entry.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-pair-entry.n=4.c=flow-in.json.input
+                     tests/ns-flow-pair-entry.n=4.c=flow-in.json.output
+                     tests/ns-flow-pair-entry.n=4.c=flow-in.yaml.input
+                     tests/ns-flow-pair-entry.n=4.c=flow-in.yaml.output
+                     tests/ns-flow-pair.n=4.c=flow-in.explicit.input
+                     tests/ns-flow-pair.n=4.c=flow-in.explicit.output
+                     tests/ns-flow-pair.n=4.c=flow-in.implicit.input
+                     tests/ns-flow-pair.n=4.c=flow-in.implicit.output
+                     tests/ns-flow-pair.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-pair.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-pair-yaml-key-entry.n=4.c=flow-in.input
+                     tests/ns-flow-pair-yaml-key-entry.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-pair-yaml-key-entry.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-pair-yaml-key-entry.n=4.c=flow-in.output
+                     tests/ns-flow-seq-entry.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-seq-entry.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-seq-entry.n=4.c=flow-in.node.input
+                     tests/ns-flow-seq-entry.n=4.c=flow-in.node.output
+                     tests/ns-flow-seq-entry.n=4.c=flow-in.pair.input
+                     tests/ns-flow-seq-entry.n=4.c=flow-in.pair.output
+                     tests/ns-flow-yaml-content.n=4.c=flow-in.input
+                     tests/ns-flow-yaml-content.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-yaml-content.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-yaml-content.n=4.c=flow-in.output
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.alias.input
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.alias.output
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.invalid.input
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.invalid.output
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.tagged.input
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.tagged.output
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.tag.input
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.tag.output
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.untagged.input
+                     tests/ns-flow-yaml-node.n=4.c=flow-in.untagged.output
+                     tests/ns-global-tag-prefix.input tests/ns-global-tag-prefix.invalid.input
+                     tests/ns-global-tag-prefix.invalid.output tests/ns-global-tag-prefix.output
+                     tests/ns-hex-digit.6.input tests/ns-hex-digit.6.output
+                     tests/ns-hex-digit.a.input tests/ns-hex-digit.a.output
+                     tests/ns-hex-digit.B.input tests/ns-hex-digit.B.output
+                     tests/ns-hex-digit.c.input tests/ns-hex-digit.c.output
+                     tests/ns-hex-digit.D.input tests/ns-hex-digit.D.output
+                     tests/ns-hex-digit.e.input tests/ns-hex-digit.e.output
+                     tests/ns-hex-digit.F.input tests/ns-hex-digit.F.output
+                     tests/ns-hex-digit.invalid.input tests/ns-hex-digit.invalid.output
+                     tests/ns-l-block-map-entry.n=2.explicit.input
+                     tests/ns-l-block-map-entry.n=2.explicit.output
+                     tests/ns-l-block-map-entry.n=2.implicit.input
+                     tests/ns-l-block-map-entry.n=2.implicit.output
+                     tests/ns-l-block-map-entry.n=2.invalid.input
+                     tests/ns-l-block-map-entry.n=2.invalid.output
+                     tests/ns-l-block-map-implicit-entry.n=2.empty.input
+                     tests/ns-l-block-map-implicit-entry.n=2.empty.output
+                     tests/ns-l-block-map-implicit-entry.n=2.invalid.input
+                     tests/ns-l-block-map-implicit-entry.n=2.invalid.output
+                     tests/ns-l-block-map-implicit-entry.n=2.non-empty.input
+                     tests/ns-l-block-map-implicit-entry.n=2.non-empty.output
+                     tests/ns-l-in-line-mapping.n=2.input
+                     tests/ns-l-in-line-mapping.n=2.invalid.input
+                     tests/ns-l-in-line-mapping.n=2.invalid.output
+                     tests/ns-l-in-line-mapping.n=2.output tests/ns-l-in-line-sequence.n=3.input
+                     tests/ns-l-in-line-sequence.n=3.invalid.input
+                     tests/ns-l-in-line-sequence.n=3.invalid.output
+                     tests/ns-l-in-line-sequence.n=3.output tests/ns-plain-char.c=flow-in.a.input
+                     tests/ns-plain-char.c=flow-in.a.output tests/ns-plain-char.c=flow-in.s.input
+                     tests/ns-plain-char.c=flow-in.s.output tests/ns-plain-first.c=flow-in.a.input
+                     tests/ns-plain-first.c=flow-in.a.output tests/ns-plain-first.c=flow-in.c.input
+                     tests/ns-plain-first.c=flow-in.c.output tests/ns-plain-first.c=flow-in.d.input
+                     tests/ns-plain-first.c=flow-in.d.output tests/ns-plain-first.c=flow-in.ia.input
+                     tests/ns-plain-first.c=flow-in.ia.output tests/ns-plain-first.c=flow-in.i.input
+                     tests/ns-plain-first.c=flow-in.i.output tests/ns-plain-first.c=flow-in.k.input
+                     tests/ns-plain-first.c=flow-in.k.output tests/ns-plain-first.c=flow-in.m.input
+                     tests/ns-plain-first.c=flow-in.m.output tests/ns-plain-first.c=flow-in.s.input
+                     tests/ns-plain-first.c=flow-in.s.output tests/ns-plain-first.c=flow-in.v.input
+                     tests/ns-plain-first.c=flow-in.v.output tests/ns-plain-first.c=flow-out.m.input
+                     tests/ns-plain-first.c=flow-out.m.output
+                     tests/ns-plain-multi-line.n=4.c=flow-in.input
+                     tests/ns-plain-multi-line.n=4.c=flow-in.invalid.input
+                     tests/ns-plain-multi-line.n=4.c=flow-in.invalid.output
+                     tests/ns-plain-multi-line.n=4.c=flow-in.output
+                     tests/ns-plain.n=1.c=flow-key.da.input tests/ns-plain.n=1.c=flow-key.da.output
+                     tests/ns-plain.n=1.c=flow-key.dc.input tests/ns-plain.n=1.c=flow-key.dc.output
+                     tests/ns-plain.n=1.c=flow-key.ds.input tests/ns-plain.n=1.c=flow-key.ds.output
+                     tests/ns-plain.n=1.c=flow-key.ka.input tests/ns-plain.n=1.c=flow-key.ka.output
+                     tests/ns-plain.n=1.c=flow-key.kc.input tests/ns-plain.n=1.c=flow-key.kc.output
+                     tests/ns-plain.n=1.c=flow-key.ks.input tests/ns-plain.n=1.c=flow-key.ks.output
+                     tests/ns-plain.n=1.c=flow-key.va.input tests/ns-plain.n=1.c=flow-key.va.output
+                     tests/ns-plain.n=1.c=flow-key.vc.input tests/ns-plain.n=1.c=flow-key.vc.output
+                     tests/ns-plain.n=1.c=flow-key.vs.input tests/ns-plain.n=1.c=flow-key.vs.output
+                     tests/ns-plain.n=4.c=flow-in.input tests/ns-plain.n=4.c=flow-in.output
+                     tests/ns-plain.n=4.c=flow-key.input tests/ns-plain.n=4.c=flow-key.invalid.input
+                     tests/ns-plain.n=4.c=flow-key.invalid.output
+                     tests/ns-plain.n=4.c=flow-key.output
+                     tests/ns-plain-one-line.c=flow-key.invalid.input
+                     tests/ns-plain-one-line.c=flow-key.invalid.output
+                     tests/ns-plain-one-line.c=flow-out.input
+                     tests/ns-plain-one-line.c=flow-out.output
+                     tests/ns-plain-safe.c=flow-in.mapping-start.input
+                     tests/ns-plain-safe.c=flow-in.mapping-start.output
+                     tests/ns-plain-safe.c=flow-in.v.input tests/ns-plain-safe.c=flow-in.v.output
+                     tests/ns-plain-safe.c=flow-out.a.input tests/ns-plain-safe.c=flow-out.a.output
+                     tests/ns-plain-safe.c=flow-out.c.input tests/ns-plain-safe.c=flow-out.c.output
+                     tests/ns-plain-safe.c=flow-out.mapping-start.input
+                     tests/ns-plain-safe.c=flow-out.mapping-start.output
+                     tests/ns-plain-safe-in.a.input tests/ns-plain-safe-in.a.output
+                     tests/ns-plain-safe-in.c.input tests/ns-plain-safe-in.c.output
+                     tests/ns-plain-safe-in.mapping-start.input
+                     tests/ns-plain-safe-in.mapping-start.output tests/ns-plain-safe-in.v.input
+                     tests/ns-plain-safe-in.v.output tests/ns-plain-safe-out.a.input
+                     tests/ns-plain-safe-out.a.output tests/ns-plain-safe-out.c.input
+                     tests/ns-plain-safe-out.c.output tests/ns-plain-safe-out.mapping-start.input
+                     tests/ns-plain-safe-out.mapping-start.output tests/ns-plain-safe-out.v.input
+                     tests/ns-plain-safe-out.v.output tests/ns-reserved-directive.input
+                     tests/ns-reserved-directive.invalid.input
+                     tests/ns-reserved-directive.invalid.output tests/ns-reserved-directive.output
+                     tests/ns-s-block-map-implicit-key.invalid.input
+                     tests/ns-s-block-map-implicit-key.invalid.output
+                     tests/ns-s-block-map-implicit-key.json.input
+                     tests/ns-s-block-map-implicit-key.json.output
+                     tests/ns-s-block-map-implicit-key.yaml.input
+                     tests/ns-s-block-map-implicit-key.yaml.output
+                     tests/ns-s-flow-map-entries.n=4.c=flow-in.invalid.input
+                     tests/ns-s-flow-map-entries.n=4.c=flow-in.invalid.output
+                     tests/ns-s-flow-map-entries.n=4.c=flow-in.lines.input
+                     tests/ns-s-flow-map-entries.n=4.c=flow-in.lines.output
+                     tests/ns-s-flow-map-entries.n=4.c=flow-in.multi.input
+                     tests/ns-s-flow-map-entries.n=4.c=flow-in.multi.output
+                     tests/ns-s-flow-map-entries.n=4.c=flow-in.single.input
+                     tests/ns-s-flow-map-entries.n=4.c=flow-in.single.output
+                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.invalid.input
+                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.invalid.output
+                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.lines.input
+                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.lines.output
+                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.multi.input
+                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.multi.output
+                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.single.input
+                     tests/ns-s-flow-seq-entries.n=4.c=flow-in.single.output
+                     tests/ns-s-implicit-yaml-key.just.input
+                     tests/ns-s-implicit-yaml-key.just.output
+                     tests/ns-s-implicit-yaml-key.long.input
+                     tests/ns-s-implicit-yaml-key.long.output
+                     tests/ns-s-implicit-yaml-key.short.input
+                     tests/ns-s-implicit-yaml-key.short.output tests/ns-single-char.input
+                     tests/ns-single-char.invalid.input tests/ns-single-char.invalid.output
+                     tests/ns-single-char.output tests/ns-tag-char.input
+                     tests/ns-tag-char.invalid.input tests/ns-tag-char.invalid.output
+                     tests/ns-tag-char.output tests/ns-tag-directive.input
+                     tests/ns-tag-directive.invalid.input tests/ns-tag-directive.invalid.output
+                     tests/ns-tag-directive.output tests/ns-tag-prefix.global.input
+                     tests/ns-tag-prefix.global.output tests/ns-tag-prefix.invalid.input
+                     tests/ns-tag-prefix.invalid.output tests/ns-tag-prefix.local.input
+                     tests/ns-tag-prefix.local.output tests/ns-uri-char.6.input
+                     tests/ns-uri-char.6.output tests/ns-uri-char.ampersand.input
+                     tests/ns-uri-char.ampersand.output tests/ns-uri-char.asterisk.input
+                     tests/ns-uri-char.asterisk.output tests/ns-uri-char.at.input
+                     tests/ns-uri-char.at.output tests/ns-uri-char.colon.input
+                     tests/ns-uri-char.colon.output tests/ns-uri-char.comma.input
+                     tests/ns-uri-char.comma.output tests/ns-uri-char.dollar.input
+                     tests/ns-uri-char.dollar.output tests/ns-uri-char.equal.input
+                     tests/ns-uri-char.equal.output tests/ns-uri-char.escaped.input
+                     tests/ns-uri-char.escaped.output tests/ns-uri-char.exclamation.input
+                     tests/ns-uri-char.exclamation.output tests/ns-uri-char.hyphen.input
+                     tests/ns-uri-char.hyphen.output tests/ns-uri-char.invalid.input
+                     tests/ns-uri-char.invalid.output tests/ns-uri-char.left-round.input
+                     tests/ns-uri-char.left-round.output tests/ns-uri-char.left-square.input
+                     tests/ns-uri-char.left-square.output tests/ns-uri-char.n.input
+                     tests/ns-uri-char.n.output tests/ns-uri-char.period.input
+                     tests/ns-uri-char.period.output tests/ns-uri-char.plus.input
+                     tests/ns-uri-char.plus.output tests/ns-uri-char.question.input
+                     tests/ns-uri-char.question.output tests/ns-uri-char.right-round.input
+                     tests/ns-uri-char.right-round.output tests/ns-uri-char.right-square.input
+                     tests/ns-uri-char.right-square.output tests/ns-uri-char.semicolon.input
+                     tests/ns-uri-char.semicolon.output tests/ns-uri-char.single-quote.input
+                     tests/ns-uri-char.single-quote.output tests/ns-uri-char.slash.input
+                     tests/ns-uri-char.slash.output tests/ns-uri-char.tilde.input
+                     tests/ns-uri-char.tilde.output tests/ns-uri-char.underscore.input
+                     tests/ns-uri-char.underscore.output tests/ns-word-char.0.input
+                     tests/ns-word-char.0.output tests/ns-word-char.hyphen.input
+                     tests/ns-word-char.hyphen.output tests/ns-word-char.invalid.input
+                     tests/ns-word-char.invalid.output tests/ns-word-char.n.input
+                     tests/ns-word-char.n.output tests/ns-yaml-directive.input
+                     tests/ns-yaml-directive.invalid.input tests/ns-yaml-directive.invalid.output
+                     tests/ns-yaml-directive.output tests/ns-yaml-version.input
+                     tests/ns-yaml-version.invalid.input tests/ns-yaml-version.invalid.output
+                     tests/ns-yaml-version.output tests/s-b-comment.empty.input
+                     tests/s-b-comment.empty.output tests/s-b-comment.invalid.input
+                     tests/s-b-comment.invalid.output tests/s-b-comment.sol-text.input
+                     tests/s-b-comment.sol-text.output tests/s-b-comment.spaces.input
+                     tests/s-b-comment.spaces.output tests/s-b-comment.spaces-text.input
+                     tests/s-b-comment.spaces-text.output tests/s-block-line-prefix.n=4.input
+                     tests/s-block-line-prefix.n=4.invalid.input
+                     tests/s-block-line-prefix.n=4.invalid.output
+                     tests/s-block-line-prefix.n=4.output tests/s-flow-line-prefix.n=4.indent.input
+                     tests/s-flow-line-prefix.n=4.indent.output
+                     tests/s-flow-line-prefix.n=4.invalid.input
+                     tests/s-flow-line-prefix.n=4.invalid.output
+                     tests/s-flow-line-prefix.n=4.tab.input tests/s-flow-line-prefix.n=4.tab.output
+                     tests/s-indent-le.n=0.input tests/s-indent-le.n=0.output
+                     tests/s-indent-le.n=-1.invalid.input tests/s-indent-le.n=-1.invalid.output
+                     tests/s-indent-le.n=4.input tests/s-indent-le.n=4.invalid.input
+                     tests/s-indent-le.n=4.invalid.output tests/s-indent-le.n=4.output
+                     tests/s-indent-lt.n=0.invalid.input tests/s-indent-lt.n=0.invalid.output
+                     tests/s-indent-lt.n=-1.invalid.input tests/s-indent-lt.n=-1.invalid.output
+                     tests/s-indent-lt.n=4.input tests/s-indent-lt.n=4.invalid.input
+                     tests/s-indent-lt.n=4.invalid.output tests/s-indent-lt.n=4.output
+                     tests/s-indent.n=0.input tests/s-indent.n=0.output tests/s-indent.n=-1.input
+                     tests/s-indent.n=-1.output tests/s-indent.n=4.input
+                     tests/s-indent.n=4.invalid.input tests/s-indent.n=4.invalid.output
+                     tests/s-indent.n=4.output
+                     tests/s-l+block-collection.n=2.c=block-in.invalid.input
+                     tests/s-l+block-collection.n=2.c=block-in.invalid.output
+                     tests/s-l+block-collection.n=2.c=block-in.mapping.input
+                     tests/s-l+block-collection.n=2.c=block-in.mapping.output
+                     tests/s-l+block-collection.n=2.c=block-out.mapping.input
+                     tests/s-l+block-collection.n=2.c=block-out.mapping.output
+                     tests/s-l+block-collection.n=2.c=block-out.sequence.input
+                     tests/s-l+block-collection.n=2.c=block-out.sequence.output
+                     tests/s-l+block-in-block.n=2.c=block-in.invalid.input
+                     tests/s-l+block-in-block.n=2.c=block-in.invalid.output
+                     tests/s-l+block-in-block.n=2.c=block-in.tagged.input
+                     tests/s-l+block-in-block.n=2.c=block-in.tagged.output
+                     tests/s-l+block-in-block.n=2.c=block-in.untagged.input
+                     tests/s-l+block-in-block.n=2.c=block-in.untagged.output
+                     tests/s-l+block-in-block.n=2.c=block-out.invalid.input
+                     tests/s-l+block-in-block.n=2.c=block-out.invalid.output
+                     tests/s-l+block-indented.n=2.c=block-in.in-line-map.input
+                     tests/s-l+block-indented.n=2.c=block-in.in-line-map.output
+                     tests/s-l+block-indented.n=2.c=block-in.in-line-seq.input
+                     tests/s-l+block-indented.n=2.c=block-in.in-line-seq.output
+                     tests/s-l+block-indented.n=2.c=block-in.invalid.input
+                     tests/s-l+block-indented.n=2.c=block-in.invalid.output
+                     tests/s-l+block-indented.n=2.c=block-in.literal.input
+                     tests/s-l+block-indented.n=2.c=block-in.literal.output
+                     tests/s-l+block-indented.n=2.c=block-in.sequence.input
+                     tests/s-l+block-indented.n=2.c=block-in.sequence.output
+                     tests/s-l+block-indented.n=2.c=block-out.in-line-map.input
+                     tests/s-l+block-indented.n=2.c=block-out.in-line-map.output
+                     tests/s-l+block-indented.n=2.c=block-out.in-line-seq.input
+                     tests/s-l+block-indented.n=2.c=block-out.in-line-seq.output
+                     tests/s-l+block-indented.n=2.c=block-out.invalid.input
+                     tests/s-l+block-indented.n=2.c=block-out.invalid.output
+                     tests/s-l+block-indented.n=2.c=block-out.sequence.input
+                     tests/s-l+block-indented.n=2.c=block-out.sequence.output
+                     tests/s-l+block-node.n=0.c=block-out.invalid.input
+                     tests/s-l+block-node.n=0.c=block-out.invalid.output
+                     tests/s-l+block-node.n=-1.c=block-in.1.input
+                     tests/s-l+block-node.n=-1.c=block-in.1.output
+                     tests/s-l+block-node.n=-1.c=block-in.2.input
+                     tests/s-l+block-node.n=-1.c=block-in.2.output
+                     tests/s-l+block-node.n=-1.c=block-in.3.input
+                     tests/s-l+block-node.n=-1.c=block-in.3.output
+                     tests/s-l+block-node.n=-1.c=block-in.input
+                     tests/s-l+block-node.n=-1.c=block-in.invalid.input
+                     tests/s-l+block-node.n=-1.c=block-in.invalid.output
+                     tests/s-l+block-node.n=-1.c=block-in.output
+                     tests/s-l+block-node.n=-1.c=block-out.1.input
+                     tests/s-l+block-node.n=-1.c=block-out.1.output
+                     tests/s-l+block-node.n=-1.c=block-out.2.input
+                     tests/s-l+block-node.n=-1.c=block-out.2.output
+                     tests/s-l+block-node.n=-1.c=block-out.3.input
+                     tests/s-l+block-node.n=-1.c=block-out.3.output
+                     tests/s-l+block-node.n=-1.c=block-out.input
+                     tests/s-l+block-node.n=-1.c=block-out.invalid.input
+                     tests/s-l+block-node.n=-1.c=block-out.invalid.output
+                     tests/s-l+block-node.n=-1.c=block-out.output
+                     tests/s-l+block-node.n=2.c=block-in.block.input
+                     tests/s-l+block-node.n=2.c=block-in.block.output
+                     tests/s-l+block-node.n=2.c=block-in.flow.input
+                     tests/s-l+block-node.n=2.c=block-in.flow.output
+                     tests/s-l+block-node.n=2.c=block-in.invalid.input
+                     tests/s-l+block-node.n=2.c=block-in.invalid.output
+                     tests/s-l+block-node.n=2.c=block-out.flow.input
+                     tests/s-l+block-node.n=2.c=block-out.flow.output
+                     tests/s-l+block-scalar.n=2.c=block-in.folded.input
+                     tests/s-l+block-scalar.n=2.c=block-in.folded.invalid.input
+                     tests/s-l+block-scalar.n=2.c=block-in.folded.invalid.output
+                     tests/s-l+block-scalar.n=2.c=block-in.folded.output
+                     tests/s-l+block-scalar.n=2.c=block-in.literal.input
+                     tests/s-l+block-scalar.n=2.c=block-in.literal.invalid.input
+                     tests/s-l+block-scalar.n=2.c=block-in.literal.invalid.output
+                     tests/s-l+block-scalar.n=2.c=block-in.literal.output
+                     tests/s-l-comments.invalid.input tests/s-l-comments.invalid.output
+                     tests/s-l-comments.lines.input tests/s-l-comments.lines.output
+                     tests/s-l-comments.multi.input tests/s-l-comments.multi.output
+                     tests/s-l-comments.sol.input tests/s-l-comments.sol.output
+                     tests/s-l-double-any.n=4.escaped.input tests/s-l-double-any.n=4.escaped.output
+                     tests/s-l-double-any.n=4.folded.input tests/s-l-double-any.n=4.folded.output
+                     tests/s-l-double-any.n=4.invalid.input tests/s-l-double-any.n=4.invalid.output
+                     tests/s-l-double-escaped.n=2.input tests/s-l-double-escaped.n=2.invalid.input
+                     tests/s-l-double-escaped.n=2.invalid.output tests/s-l-double-escaped.n=2.output
+                     tests/s-l-flow-folded.n=4.invalid.input
+                     tests/s-l-flow-folded.n=4.invalid.output tests/s-l-flow-folded.n=4.lf.input
+                     tests/s-l-flow-folded.n=4.lf.output tests/s-l-flow-folded.n=4.sp-lf-lf.input
+                     tests/s-l-flow-folded.n=4.sp-lf-lf.output tests/s-l+flow-in-block.n=2.input
+                     tests/s-l+flow-in-block.n=2.invalid.input
+                     tests/s-l+flow-in-block.n=2.invalid.output tests/s-l+flow-in-block.n=2.output
+                     tests/s-line-prefix.n=4.c=block-in.input
+                     tests/s-line-prefix.n=4.c=block-in.output
+                     tests/s-line-prefix.n=4.c=block-out.invalid.input
+                     tests/s-line-prefix.n=4.c=block-out.invalid.output
+                     tests/s-line-prefix.n=4.c=flow-in.input
+                     tests/s-line-prefix.n=4.c=flow-in.output
+                     tests/s-line-prefix.n=4.c=flow-out.input
+                     tests/s-line-prefix.n=4.c=flow-out.output tests/s-nb-folded-text.n=4.input
+                     tests/s-nb-folded-text.n=4.invalid.input
+                     tests/s-nb-folded-text.n=4.invalid.output tests/s-nb-folded-text.n=4.output
+                     tests/s-nb-spaced-text.n=4.input tests/s-nb-spaced-text.n=4.invalid.input
+                     tests/s-nb-spaced-text.n=4.invalid.output tests/s-nb-spaced-text.n=4.output
+                     tests/s-ns-double-next-line.n=4.input
+                     tests/s-ns-double-next-line.n=4.invalid.input
+                     tests/s-ns-double-next-line.n=4.invalid.output
+                     tests/s-ns-double-next-line.n=4.output
+                     tests/s-ns-plain-next-line.n=4.c=flow-in.input
+                     tests/s-ns-plain-next-line.n=4.c=flow-in.invalid.input
+                     tests/s-ns-plain-next-line.n=4.c=flow-in.invalid.output
+                     tests/s-ns-plain-next-line.n=4.c=flow-in.output
+                     tests/s-ns-single-next-line.n=4.input
+                     tests/s-ns-single-next-line.n=4.invalid.input
+                     tests/s-ns-single-next-line.n=4.invalid.output
+                     tests/s-ns-single-next-line.n=4.output tests/s-separate-in-line.invalid.input
+                     tests/s-separate-in-line.invalid.output tests/s-separate-in-line.sol.input
+                     tests/s-separate-in-line.sol.output tests/s-separate-in-line.sp.input
+                     tests/s-separate-in-line.sp.output tests/s-separate-lines.n=4.invalid.input
+                     tests/s-separate-lines.n=4.invalid.output
+                     tests/s-separate-lines.n=4.lines.input tests/s-separate-lines.n=4.lines.output
+                     tests/s-separate-lines.n=4.sol.input tests/s-separate-lines.n=4.sol.output
+                     tests/s-separate-lines.n=4.sp.input tests/s-separate-lines.n=4.sp.output
+                     tests/s-separate.n=4.c=flow-key.empty.input
+                     tests/s-separate.n=4.c=flow-key.empty.output
+                     tests/s-separate.n=4.c=flow-key.invalid.input
+                     tests/s-separate.n=4.c=flow-key.invalid.output
+                     tests/s-separate.n=4.c=flow-key.sp.input
+                     tests/s-separate.n=4.c=flow-key.sp.output
+                     tests/s-separate.n=4.c=flow-out.empty.input
+                     tests/s-separate.n=4.c=flow-out.empty.output
+                     tests/s-separate.n=4.c=flow-out.line.input
+                     tests/s-separate.n=4.c=flow-out.line.output
+                     tests/s-separate.n=4.c=flow-out.sp.input
+                     tests/s-separate.n=4.c=flow-out.sp.output tests/s-space.input
+                     tests/s-space.invalid.input tests/s-space.invalid.output tests/s-space.output
+                     tests/s-tab.input tests/s-tab.invalid.input tests/s-tab.invalid.output
+                     tests/s-tab.output tests/s-white.invalid.input tests/s-white.invalid.output
+                     tests/s-white.sp.input tests/s-white.sp.output tests/s-white.tab.input
                      tests/s-white.tab.output
 
 Flag small_base
diff --git a/tests/b-ignored-any.invalid.input b/tests/b-ignored-any.invalid.input
deleted file mode 100644
--- a/tests/b-ignored-any.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-a
diff --git a/tests/b-ignored-any.invalid.output b/tests/b-ignored-any.invalid.output
deleted file mode 100644
--- a/tests/b-ignored-any.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected 'a'
diff --git a/tests/b-ignored-any.lf.input b/tests/b-ignored-any.lf.input
deleted file mode 100644
--- a/tests/b-ignored-any.lf.input
+++ /dev/null
@@ -1,1 +0,0 @@
-
diff --git a/tests/b-ignored-any.lf.output b/tests/b-ignored-any.lf.output
deleted file mode 100644
--- a/tests/b-ignored-any.lf.output
+++ /dev/null
@@ -1,1 +0,0 @@
-b\x0a
diff --git a/tests/b-ignored-any.ls.input b/tests/b-ignored-any.ls.input
deleted file mode 100644
--- a/tests/b-ignored-any.ls.input
+++ /dev/null
@@ -1,1 +0,0 @@
- 
diff --git a/tests/b-ignored-any.ls.output b/tests/b-ignored-any.ls.output
deleted file mode 100644
--- a/tests/b-ignored-any.ls.output
+++ /dev/null
@@ -1,1 +0,0 @@
-b\u2028
diff --git a/tests/b-ignored-generic.input b/tests/b-ignored-generic.input
deleted file mode 100644
--- a/tests/b-ignored-generic.input
+++ /dev/null
@@ -1,1 +0,0 @@
-
diff --git a/tests/b-ignored-generic.output b/tests/b-ignored-generic.output
deleted file mode 100644
--- a/tests/b-ignored-generic.output
+++ /dev/null
@@ -1,1 +0,0 @@
-b\x0a
diff --git a/tests/b-l-folded-any.n=4.c=flow-in.as-space.input b/tests/b-l-folded-any.n=4.c=flow-in.as-space.input
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-any.n=4.c=flow-in.as-space.input
@@ -0,0 +1,1 @@
+
diff --git a/tests/b-l-folded-any.n=4.c=flow-in.as-space.output b/tests/b-l-folded-any.n=4.c=flow-in.as-space.output
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-any.n=4.c=flow-in.as-space.output
@@ -0,0 +1,1 @@
+l\x0a
diff --git a/tests/b-l-folded-any.n=4.c=flow-in.invalid.input b/tests/b-l-folded-any.n=4.c=flow-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-any.n=4.c=flow-in.invalid.input
@@ -0,0 +1,1 @@
+a
diff --git a/tests/b-l-folded-any.n=4.c=flow-in.invalid.output b/tests/b-l-folded-any.n=4.c=flow-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-any.n=4.c=flow-in.invalid.output
@@ -0,0 +1,1 @@
+!$InputFile$: line 1: column 0: Unexpected 'a'
diff --git a/tests/b-l-folded-any.n=4.c=flow-in.specific.input b/tests/b-l-folded-any.n=4.c=flow-in.specific.input
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-any.n=4.c=flow-in.specific.input
@@ -0,0 +1,2 @@
+ 
+ 
diff --git a/tests/b-l-folded-any.n=4.c=flow-in.specific.output b/tests/b-l-folded-any.n=4.c=flow-in.specific.output
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-any.n=4.c=flow-in.specific.output
@@ -0,0 +1,3 @@
+B\u2028
+L\x0a
+B\u2028
diff --git a/tests/b-l-folded-any.n=4.c=flow-in.trimmed.input b/tests/b-l-folded-any.n=4.c=flow-in.trimmed.input
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-any.n=4.c=flow-in.trimmed.input
@@ -0,0 +1,2 @@
+
+ 
diff --git a/tests/b-l-folded-any.n=4.c=flow-in.trimmed.output b/tests/b-l-folded-any.n=4.c=flow-in.trimmed.output
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-any.n=4.c=flow-in.trimmed.output
@@ -0,0 +1,3 @@
+b\x0a
+B\u2028
+L\x0a
diff --git a/tests/b-l-folded-any.n=4.s=plain.as-space.input b/tests/b-l-folded-any.n=4.s=plain.as-space.input
deleted file mode 100644
--- a/tests/b-l-folded-any.n=4.s=plain.as-space.input
+++ /dev/null
@@ -1,1 +0,0 @@
-
diff --git a/tests/b-l-folded-any.n=4.s=plain.as-space.output b/tests/b-l-folded-any.n=4.s=plain.as-space.output
deleted file mode 100644
--- a/tests/b-l-folded-any.n=4.s=plain.as-space.output
+++ /dev/null
@@ -1,1 +0,0 @@
-l\x0a
diff --git a/tests/b-l-folded-any.n=4.s=plain.invalid.input b/tests/b-l-folded-any.n=4.s=plain.invalid.input
deleted file mode 100644
--- a/tests/b-l-folded-any.n=4.s=plain.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-a
diff --git a/tests/b-l-folded-any.n=4.s=plain.invalid.output b/tests/b-l-folded-any.n=4.s=plain.invalid.output
deleted file mode 100644
--- a/tests/b-l-folded-any.n=4.s=plain.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected 'a'
diff --git a/tests/b-l-folded-any.n=4.s=plain.specific.input b/tests/b-l-folded-any.n=4.s=plain.specific.input
deleted file mode 100644
--- a/tests/b-l-folded-any.n=4.s=plain.specific.input
+++ /dev/null
@@ -1,2 +0,0 @@
- 
- 
diff --git a/tests/b-l-folded-any.n=4.s=plain.specific.output b/tests/b-l-folded-any.n=4.s=plain.specific.output
deleted file mode 100644
--- a/tests/b-l-folded-any.n=4.s=plain.specific.output
+++ /dev/null
@@ -1,3 +0,0 @@
-B\u2028
-L\x0a
-B\u2028
diff --git a/tests/b-l-folded-any.n=4.s=plain.trimmed.input b/tests/b-l-folded-any.n=4.s=plain.trimmed.input
deleted file mode 100644
--- a/tests/b-l-folded-any.n=4.s=plain.trimmed.input
+++ /dev/null
@@ -1,2 +0,0 @@
-
- 
diff --git a/tests/b-l-folded-any.n=4.s=plain.trimmed.output b/tests/b-l-folded-any.n=4.s=plain.trimmed.output
deleted file mode 100644
--- a/tests/b-l-folded-any.n=4.s=plain.trimmed.output
+++ /dev/null
@@ -1,3 +0,0 @@
-b\x0a
-B\u2028
-L\x0a
diff --git a/tests/b-l-folded-specific.n=4.c=flow-in.invalid.input b/tests/b-l-folded-specific.n=4.c=flow-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-specific.n=4.c=flow-in.invalid.input
@@ -0,0 +1,3 @@
+
+
+
diff --git a/tests/b-l-folded-specific.n=4.c=flow-in.invalid.output b/tests/b-l-folded-specific.n=4.c=flow-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-specific.n=4.c=flow-in.invalid.output
@@ -0,0 +1,1 @@
+!$InputFile$: line 1: column 0: Unexpected '\x0a'
diff --git a/tests/b-l-folded-specific.n=4.c=flow-in.ls-lf-ls.input b/tests/b-l-folded-specific.n=4.c=flow-in.ls-lf-ls.input
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-specific.n=4.c=flow-in.ls-lf-ls.input
@@ -0,0 +1,2 @@
+ 
+ 
diff --git a/tests/b-l-folded-specific.n=4.c=flow-in.ls-lf-ls.output b/tests/b-l-folded-specific.n=4.c=flow-in.ls-lf-ls.output
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-specific.n=4.c=flow-in.ls-lf-ls.output
@@ -0,0 +1,3 @@
+B\u2028
+L\x0a
+B\u2028
diff --git a/tests/b-l-folded-specific.n=4.c=flow-in.ls.input b/tests/b-l-folded-specific.n=4.c=flow-in.ls.input
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-specific.n=4.c=flow-in.ls.input
@@ -0,0 +1,1 @@
+ 
diff --git a/tests/b-l-folded-specific.n=4.c=flow-in.ls.output b/tests/b-l-folded-specific.n=4.c=flow-in.ls.output
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-specific.n=4.c=flow-in.ls.output
@@ -0,0 +1,1 @@
+B\u2028
diff --git a/tests/b-l-folded-specific.n=4.s=plain.invalid.input b/tests/b-l-folded-specific.n=4.s=plain.invalid.input
deleted file mode 100644
--- a/tests/b-l-folded-specific.n=4.s=plain.invalid.input
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/tests/b-l-folded-specific.n=4.s=plain.invalid.output b/tests/b-l-folded-specific.n=4.s=plain.invalid.output
deleted file mode 100644
--- a/tests/b-l-folded-specific.n=4.s=plain.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected '\x0a'
diff --git a/tests/b-l-folded-specific.n=4.s=plain.ls-lf-ls.input b/tests/b-l-folded-specific.n=4.s=plain.ls-lf-ls.input
deleted file mode 100644
--- a/tests/b-l-folded-specific.n=4.s=plain.ls-lf-ls.input
+++ /dev/null
@@ -1,2 +0,0 @@
- 
- 
diff --git a/tests/b-l-folded-specific.n=4.s=plain.ls-lf-ls.output b/tests/b-l-folded-specific.n=4.s=plain.ls-lf-ls.output
deleted file mode 100644
--- a/tests/b-l-folded-specific.n=4.s=plain.ls-lf-ls.output
+++ /dev/null
@@ -1,3 +0,0 @@
-B\u2028
-L\x0a
-B\u2028
diff --git a/tests/b-l-folded-specific.n=4.s=plain.ls.input b/tests/b-l-folded-specific.n=4.s=plain.ls.input
deleted file mode 100644
--- a/tests/b-l-folded-specific.n=4.s=plain.ls.input
+++ /dev/null
@@ -1,1 +0,0 @@
- 
diff --git a/tests/b-l-folded-specific.n=4.s=plain.ls.output b/tests/b-l-folded-specific.n=4.s=plain.ls.output
deleted file mode 100644
--- a/tests/b-l-folded-specific.n=4.s=plain.ls.output
+++ /dev/null
@@ -1,1 +0,0 @@
-B\u2028
diff --git a/tests/b-l-folded-trimmed.n=4.c=flow-in.invalid.input b/tests/b-l-folded-trimmed.n=4.c=flow-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-trimmed.n=4.c=flow-in.invalid.input
@@ -0,0 +1,1 @@
+
diff --git a/tests/b-l-folded-trimmed.n=4.c=flow-in.invalid.output b/tests/b-l-folded-trimmed.n=4.c=flow-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-trimmed.n=4.c=flow-in.invalid.output
@@ -0,0 +1,2 @@
+b\x0a
+!$InputFile$: line 2: column 0: Unexpected end of input
diff --git a/tests/b-l-folded-trimmed.n=4.c=flow-in.lf-ls-lf.input b/tests/b-l-folded-trimmed.n=4.c=flow-in.lf-ls-lf.input
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-trimmed.n=4.c=flow-in.lf-ls-lf.input
@@ -0,0 +1,2 @@
+
+ 
diff --git a/tests/b-l-folded-trimmed.n=4.c=flow-in.lf-ls-lf.output b/tests/b-l-folded-trimmed.n=4.c=flow-in.lf-ls-lf.output
new file mode 100644
--- /dev/null
+++ b/tests/b-l-folded-trimmed.n=4.c=flow-in.lf-ls-lf.output
@@ -0,0 +1,3 @@
+b\x0a
+B\u2028
+L\x0a
diff --git a/tests/b-l-folded-trimmed.n=4.s=plain.invalid.input b/tests/b-l-folded-trimmed.n=4.s=plain.invalid.input
deleted file mode 100644
--- a/tests/b-l-folded-trimmed.n=4.s=plain.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-
diff --git a/tests/b-l-folded-trimmed.n=4.s=plain.invalid.output b/tests/b-l-folded-trimmed.n=4.s=plain.invalid.output
deleted file mode 100644
--- a/tests/b-l-folded-trimmed.n=4.s=plain.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-b\x0a
-!$InputFile$: line 2: column 0: Unexpected end of input
diff --git a/tests/b-l-folded-trimmed.n=4.s=plain.lf-ls-lf.input b/tests/b-l-folded-trimmed.n=4.s=plain.lf-ls-lf.input
deleted file mode 100644
--- a/tests/b-l-folded-trimmed.n=4.s=plain.lf-ls-lf.input
+++ /dev/null
@@ -1,2 +0,0 @@
-
- 
diff --git a/tests/b-l-folded-trimmed.n=4.s=plain.lf-ls-lf.output b/tests/b-l-folded-trimmed.n=4.s=plain.lf-ls-lf.output
deleted file mode 100644
--- a/tests/b-l-folded-trimmed.n=4.s=plain.lf-ls-lf.output
+++ /dev/null
@@ -1,3 +0,0 @@
-b\x0a
-B\u2028
-L\x0a
diff --git a/tests/b-l-literal-next.n=4.input b/tests/b-l-literal-next.n=4.input
deleted file mode 100644
--- a/tests/b-l-literal-next.n=4.input
+++ /dev/null
@@ -1,3 +0,0 @@
-
-  
-      a  
diff --git a/tests/b-l-literal-next.n=4.invalid.input b/tests/b-l-literal-next.n=4.invalid.input
deleted file mode 100644
--- a/tests/b-l-literal-next.n=4.invalid.input
+++ /dev/null
@@ -1,2 +0,0 @@
-
-  a
diff --git a/tests/b-l-literal-next.n=4.invalid.output b/tests/b-l-literal-next.n=4.invalid.output
deleted file mode 100644
--- a/tests/b-l-literal-next.n=4.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-L\x0a
-!$InputFile$: line 2: column 2: Unexpected 'a'
diff --git a/tests/b-l-literal-next.n=4.output b/tests/b-l-literal-next.n=4.output
deleted file mode 100644
--- a/tests/b-l-literal-next.n=4.output
+++ /dev/null
@@ -1,5 +0,0 @@
-L\x0a
-i  
-L\x0a
-i    
-?  a  
diff --git a/tests/b-nb-literal-next.n=4.input b/tests/b-nb-literal-next.n=4.input
new file mode 100644
--- /dev/null
+++ b/tests/b-nb-literal-next.n=4.input
@@ -0,0 +1,3 @@
+
+  
+      a  
diff --git a/tests/b-nb-literal-next.n=4.invalid.input b/tests/b-nb-literal-next.n=4.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/b-nb-literal-next.n=4.invalid.input
@@ -0,0 +1,2 @@
+
+  a
diff --git a/tests/b-nb-literal-next.n=4.invalid.output b/tests/b-nb-literal-next.n=4.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/b-nb-literal-next.n=4.invalid.output
@@ -0,0 +1,2 @@
+L\x0a
+!$InputFile$: line 2: column 2: Unexpected 'a'
diff --git a/tests/b-nb-literal-next.n=4.output b/tests/b-nb-literal-next.n=4.output
new file mode 100644
--- /dev/null
+++ b/tests/b-nb-literal-next.n=4.output
@@ -0,0 +1,5 @@
+L\x0a
+i  
+L\x0a
+i    
+?  a  
diff --git a/tests/b-non-content-any.invalid.input b/tests/b-non-content-any.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/b-non-content-any.invalid.input
@@ -0,0 +1,1 @@
+a
diff --git a/tests/b-non-content-any.invalid.output b/tests/b-non-content-any.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/b-non-content-any.invalid.output
@@ -0,0 +1,1 @@
+!$InputFile$: line 1: column 0: Unexpected 'a'
diff --git a/tests/b-non-content-any.lf.input b/tests/b-non-content-any.lf.input
new file mode 100644
--- /dev/null
+++ b/tests/b-non-content-any.lf.input
@@ -0,0 +1,1 @@
+
diff --git a/tests/b-non-content-any.lf.output b/tests/b-non-content-any.lf.output
new file mode 100644
--- /dev/null
+++ b/tests/b-non-content-any.lf.output
@@ -0,0 +1,1 @@
+b\x0a
diff --git a/tests/b-non-content-any.ls.input b/tests/b-non-content-any.ls.input
new file mode 100644
--- /dev/null
+++ b/tests/b-non-content-any.ls.input
@@ -0,0 +1,1 @@
+ 
diff --git a/tests/b-non-content-any.ls.output b/tests/b-non-content-any.ls.output
new file mode 100644
--- /dev/null
+++ b/tests/b-non-content-any.ls.output
@@ -0,0 +1,1 @@
+b\u2028
diff --git a/tests/b-non-content-generic.input b/tests/b-non-content-generic.input
new file mode 100644
--- /dev/null
+++ b/tests/b-non-content-generic.input
@@ -0,0 +1,1 @@
+
diff --git a/tests/b-non-content-generic.output b/tests/b-non-content-generic.output
new file mode 100644
--- /dev/null
+++ b/tests/b-non-content-generic.output
@@ -0,0 +1,1 @@
+b\x0a
diff --git a/tests/c-b+block-header.n=2.s=folded.i.input b/tests/c-b+block-header.n=2.s=folded.i.input
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.i.input
+++ /dev/null
@@ -1,1 +0,0 @@
->
diff --git a/tests/c-b+block-header.n=2.s=folded.i.output b/tests/c-b+block-header.n=2.s=folded.i.output
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.i.output
+++ /dev/null
@@ -1,4 +0,0 @@
-I>
-!Commit to 'node' was made outside it
-b\x0a
-$(m,t)=(1,clip)
diff --git a/tests/c-b+block-header.n=2.s=folded.im.input b/tests/c-b+block-header.n=2.s=folded.im.input
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.im.input
+++ /dev/null
@@ -1,1 +0,0 @@
->7
diff --git a/tests/c-b+block-header.n=2.s=folded.im.output b/tests/c-b+block-header.n=2.s=folded.im.output
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.im.output
+++ /dev/null
@@ -1,5 +0,0 @@
-I>
-!Commit to 'node' was made outside it
-I7
-b\x0a
-$(m,t)=(7,clip)
diff --git a/tests/c-b+block-header.n=2.s=folded.imt.input b/tests/c-b+block-header.n=2.s=folded.imt.input
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.imt.input
+++ /dev/null
@@ -1,1 +0,0 @@
->7-
diff --git a/tests/c-b+block-header.n=2.s=folded.imt.output b/tests/c-b+block-header.n=2.s=folded.imt.output
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.imt.output
+++ /dev/null
@@ -1,6 +0,0 @@
-I>
-!Commit to 'node' was made outside it
-I7
-I-
-b\x0a
-$(m,t)=(7,strip)
diff --git a/tests/c-b+block-header.n=2.s=folded.invalid.input b/tests/c-b+block-header.n=2.s=folded.invalid.input
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
--
diff --git a/tests/c-b+block-header.n=2.s=folded.invalid.output b/tests/c-b+block-header.n=2.s=folded.invalid.output
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected '-'
diff --git a/tests/c-b+block-header.n=2.s=folded.it.input b/tests/c-b+block-header.n=2.s=folded.it.input
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.it.input
+++ /dev/null
@@ -1,1 +0,0 @@
->-
diff --git a/tests/c-b+block-header.n=2.s=folded.it.output b/tests/c-b+block-header.n=2.s=folded.it.output
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.it.output
+++ /dev/null
@@ -1,5 +0,0 @@
-I>
-!Commit to 'node' was made outside it
-I-
-b\x0a
-$(m,t)=(1,strip)
diff --git a/tests/c-b+block-header.n=2.s=folded.itm.input b/tests/c-b+block-header.n=2.s=folded.itm.input
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.itm.input
+++ /dev/null
@@ -1,1 +0,0 @@
->-7
diff --git a/tests/c-b+block-header.n=2.s=folded.itm.output b/tests/c-b+block-header.n=2.s=folded.itm.output
deleted file mode 100644
--- a/tests/c-b+block-header.n=2.s=folded.itm.output
+++ /dev/null
@@ -1,6 +0,0 @@
-I>
-!Commit to 'node' was made outside it
-I-
-I7
-b\x0a
-$(m,t)=(7,strip)
diff --git a/tests/c-b-block-header.n=2.e.input b/tests/c-b-block-header.n=2.e.input
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.e.input
@@ -0,0 +1,1 @@
+
diff --git a/tests/c-b-block-header.n=2.e.output b/tests/c-b-block-header.n=2.e.output
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.e.output
@@ -0,0 +1,2 @@
+b\x0a
+$(m,t)=(1,clip)
diff --git a/tests/c-b-block-header.n=2.im.input b/tests/c-b-block-header.n=2.im.input
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.im.input
@@ -0,0 +1,1 @@
+7
diff --git a/tests/c-b-block-header.n=2.im.output b/tests/c-b-block-header.n=2.im.output
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.im.output
@@ -0,0 +1,3 @@
+I7
+b\x0a
+$(m,t)=(7,clip)
diff --git a/tests/c-b-block-header.n=2.imt.input b/tests/c-b-block-header.n=2.imt.input
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.imt.input
@@ -0,0 +1,1 @@
+7-
diff --git a/tests/c-b-block-header.n=2.imt.output b/tests/c-b-block-header.n=2.imt.output
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.imt.output
@@ -0,0 +1,4 @@
+I7
+I-
+b\x0a
+$(m,t)=(7,strip)
diff --git a/tests/c-b-block-header.n=2.it.input b/tests/c-b-block-header.n=2.it.input
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.it.input
@@ -0,0 +1,1 @@
+-
diff --git a/tests/c-b-block-header.n=2.it.output b/tests/c-b-block-header.n=2.it.output
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.it.output
@@ -0,0 +1,3 @@
+I-
+b\x0a
+$(m,t)=(1,strip)
diff --git a/tests/c-b-block-header.n=2.itm.input b/tests/c-b-block-header.n=2.itm.input
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.itm.input
@@ -0,0 +1,1 @@
+-7
diff --git a/tests/c-b-block-header.n=2.itm.output b/tests/c-b-block-header.n=2.itm.output
new file mode 100644
--- /dev/null
+++ b/tests/c-b-block-header.n=2.itm.output
@@ -0,0 +1,4 @@
+I-
+I7
+b\x0a
+$(m,t)=(7,strip)
diff --git a/tests/c-flow-indicator.collect-entry.input b/tests/c-flow-indicator.collect-entry.input
deleted file mode 100644
--- a/tests/c-flow-indicator.collect-entry.input
+++ /dev/null
@@ -1,1 +0,0 @@
-,
diff --git a/tests/c-flow-indicator.collect-entry.output b/tests/c-flow-indicator.collect-entry.output
deleted file mode 100644
--- a/tests/c-flow-indicator.collect-entry.output
+++ /dev/null
@@ -1,1 +0,0 @@
-I,
diff --git a/tests/c-flow-indicator.invalid.input b/tests/c-flow-indicator.invalid.input
deleted file mode 100644
--- a/tests/c-flow-indicator.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-a
diff --git a/tests/c-flow-indicator.invalid.output b/tests/c-flow-indicator.invalid.output
deleted file mode 100644
--- a/tests/c-flow-indicator.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected 'a'
diff --git a/tests/c-flow-indicator.mapping-end.input b/tests/c-flow-indicator.mapping-end.input
deleted file mode 100644
--- a/tests/c-flow-indicator.mapping-end.input
+++ /dev/null
@@ -1,1 +0,0 @@
-}
diff --git a/tests/c-flow-indicator.mapping-end.output b/tests/c-flow-indicator.mapping-end.output
deleted file mode 100644
--- a/tests/c-flow-indicator.mapping-end.output
+++ /dev/null
@@ -1,1 +0,0 @@
-I}
diff --git a/tests/c-flow-indicator.mapping-start.input b/tests/c-flow-indicator.mapping-start.input
deleted file mode 100644
--- a/tests/c-flow-indicator.mapping-start.input
+++ /dev/null
@@ -1,1 +0,0 @@
-{
diff --git a/tests/c-flow-indicator.mapping-start.output b/tests/c-flow-indicator.mapping-start.output
deleted file mode 100644
--- a/tests/c-flow-indicator.mapping-start.output
+++ /dev/null
@@ -1,1 +0,0 @@
-I{
diff --git a/tests/c-flow-indicator.sequence-end.input b/tests/c-flow-indicator.sequence-end.input
deleted file mode 100644
--- a/tests/c-flow-indicator.sequence-end.input
+++ /dev/null
@@ -1,1 +0,0 @@
-]
diff --git a/tests/c-flow-indicator.sequence-end.output b/tests/c-flow-indicator.sequence-end.output
deleted file mode 100644
--- a/tests/c-flow-indicator.sequence-end.output
+++ /dev/null
@@ -1,1 +0,0 @@
-I]
diff --git a/tests/c-flow-indicator.sequence-start.input b/tests/c-flow-indicator.sequence-start.input
deleted file mode 100644
--- a/tests/c-flow-indicator.sequence-start.input
+++ /dev/null
@@ -1,1 +0,0 @@
-[
diff --git a/tests/c-flow-indicator.sequence-start.output b/tests/c-flow-indicator.sequence-start.output
deleted file mode 100644
--- a/tests/c-flow-indicator.sequence-start.output
+++ /dev/null
@@ -1,1 +0,0 @@
-I[
diff --git a/tests/c-l+folded.n=2.indent.output b/tests/c-l+folded.n=2.indent.output
--- a/tests/c-l+folded.n=2.indent.output
+++ b/tests/c-l+folded.n=2.indent.output
@@ -1,6 +1,5 @@
 S
 I>
-!Commit to 'node' was made outside it
 I2
 w 
 C
diff --git a/tests/c-l+folded.n=2.invalid.output b/tests/c-l+folded.n=2.invalid.output
--- a/tests/c-l+folded.n=2.invalid.output
+++ b/tests/c-l+folded.n=2.invalid.output
@@ -1,5 +1,4 @@
 S
 I>
-!Commit to 'node' was made outside it
 b\x0a
 !$InputFile$: line 2: column 0: Expected end of input
diff --git a/tests/c-l+folded.n=2.simple.output b/tests/c-l+folded.n=2.simple.output
--- a/tests/c-l+folded.n=2.simple.output
+++ b/tests/c-l+folded.n=2.simple.output
@@ -1,6 +1,5 @@
 S
 I>
-!Commit to 'node' was made outside it
 b\x0a
 i    
 Ta
diff --git a/tests/c-l+literal.n=2.invalid.output b/tests/c-l+literal.n=2.invalid.output
--- a/tests/c-l+literal.n=2.invalid.output
+++ b/tests/c-l+literal.n=2.invalid.output
@@ -1,6 +1,5 @@
 S
 I|
-!Commit to 'node' was made outside it
 I2
 I-
 b\x0a
diff --git a/tests/c-l+literal.n=2.simple.output b/tests/c-l+literal.n=2.simple.output
--- a/tests/c-l+literal.n=2.simple.output
+++ b/tests/c-l+literal.n=2.simple.output
@@ -1,6 +1,5 @@
 S
 I|
-!Commit to 'node' was made outside it
 b\x0a
 i    
 Ta
diff --git a/tests/c-l+literal.n=2.strip-indent.output b/tests/c-l+literal.n=2.strip-indent.output
--- a/tests/c-l+literal.n=2.strip-indent.output
+++ b/tests/c-l+literal.n=2.strip-indent.output
@@ -1,6 +1,5 @@
 S
 I|
-!Commit to 'node' was made outside it
 I-
 I2
 b\x0a
diff --git a/tests/c-l+literal.n=2.strip.output b/tests/c-l+literal.n=2.strip.output
--- a/tests/c-l+literal.n=2.strip.output
+++ b/tests/c-l+literal.n=2.strip.output
@@ -1,6 +1,5 @@
 S
 I|
-!Commit to 'node' was made outside it
 I-
 b\x0a
 i    
diff --git a/tests/c-ns-alias-node.input b/tests/c-ns-alias-node.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-alias-node.input
@@ -0,0 +1,1 @@
+**&!name
diff --git a/tests/c-ns-alias-node.output b/tests/c-ns-alias-node.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-alias-node.output
@@ -0,0 +1,5 @@
+R
+I*
+!Commit to 'node' was made outside it
+t*&!name
+r
diff --git a/tests/c-ns-alias.input b/tests/c-ns-alias.input
deleted file mode 100644
--- a/tests/c-ns-alias.input
+++ /dev/null
@@ -1,1 +0,0 @@
-**&!name
diff --git a/tests/c-ns-alias.invalid.input b/tests/c-ns-alias.invalid.input
deleted file mode 100644
--- a/tests/c-ns-alias.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-*,
diff --git a/tests/c-ns-alias.invalid.output b/tests/c-ns-alias.invalid.output
deleted file mode 100644
--- a/tests/c-ns-alias.invalid.output
+++ /dev/null
@@ -1,4 +0,0 @@
-R
-I*
-!Commit to 'node' was made outside it
-!$InputFile$: line 1: column 1: Unexpected ','
diff --git a/tests/c-ns-alias.output b/tests/c-ns-alias.output
deleted file mode 100644
--- a/tests/c-ns-alias.output
+++ /dev/null
@@ -1,5 +0,0 @@
-R
-I*
-!Commit to 'node' was made outside it
-t*&!name
-r
diff --git a/tests/c-ns-esc-char.16-bit.input b/tests/c-ns-esc-char.16-bit.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.16-bit.input
@@ -0,0 +1,1 @@
+\uFEDC
diff --git a/tests/c-ns-esc-char.16-bit.output b/tests/c-ns-esc-char.16-bit.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.16-bit.output
@@ -0,0 +1,6 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+Iu
+tFEDC
+e
diff --git a/tests/c-ns-esc-char.32-bit.input b/tests/c-ns-esc-char.32-bit.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.32-bit.input
@@ -0,0 +1,1 @@
+\U0010FEDC
diff --git a/tests/c-ns-esc-char.32-bit.output b/tests/c-ns-esc-char.32-bit.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.32-bit.output
@@ -0,0 +1,6 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+IU
+t0010FEDC
+e
diff --git a/tests/c-ns-esc-char.8-bit.input b/tests/c-ns-esc-char.8-bit.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.8-bit.input
@@ -0,0 +1,1 @@
+\xFF
diff --git a/tests/c-ns-esc-char.8-bit.output b/tests/c-ns-esc-char.8-bit.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.8-bit.output
@@ -0,0 +1,6 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+Ix
+tFF
+e
diff --git a/tests/c-ns-esc-char.backslash.input b/tests/c-ns-esc-char.backslash.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.backslash.input
@@ -0,0 +1,1 @@
+\\
diff --git a/tests/c-ns-esc-char.backslash.output b/tests/c-ns-esc-char.backslash.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.backslash.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+t\x5c
+e
diff --git a/tests/c-ns-esc-char.bell.input b/tests/c-ns-esc-char.bell.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.bell.input
@@ -0,0 +1,1 @@
+\a
diff --git a/tests/c-ns-esc-char.bell.output b/tests/c-ns-esc-char.bell.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.bell.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+ta
+e
diff --git a/tests/c-ns-esc-char.bs.input b/tests/c-ns-esc-char.bs.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.bs.input
@@ -0,0 +1,1 @@
+\b
diff --git a/tests/c-ns-esc-char.bs.output b/tests/c-ns-esc-char.bs.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.bs.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+tb
+e
diff --git a/tests/c-ns-esc-char.cr.input b/tests/c-ns-esc-char.cr.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.cr.input
@@ -0,0 +1,1 @@
+\r
diff --git a/tests/c-ns-esc-char.cr.output b/tests/c-ns-esc-char.cr.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.cr.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+tr
+e
diff --git a/tests/c-ns-esc-char.double-quote.input b/tests/c-ns-esc-char.double-quote.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.double-quote.input
@@ -0,0 +1,1 @@
+\"
diff --git a/tests/c-ns-esc-char.double-quote.output b/tests/c-ns-esc-char.double-quote.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.double-quote.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+t"
+e
diff --git a/tests/c-ns-esc-char.esc.input b/tests/c-ns-esc-char.esc.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.esc.input
@@ -0,0 +1,1 @@
+\e
diff --git a/tests/c-ns-esc-char.esc.output b/tests/c-ns-esc-char.esc.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.esc.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+te
+e
diff --git a/tests/c-ns-esc-char.ff.input b/tests/c-ns-esc-char.ff.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.ff.input
@@ -0,0 +1,1 @@
+\f
diff --git a/tests/c-ns-esc-char.ff.output b/tests/c-ns-esc-char.ff.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.ff.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+tf
+e
diff --git a/tests/c-ns-esc-char.lf.input b/tests/c-ns-esc-char.lf.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.lf.input
@@ -0,0 +1,1 @@
+\n
diff --git a/tests/c-ns-esc-char.lf.output b/tests/c-ns-esc-char.lf.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.lf.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+tn
+e
diff --git a/tests/c-ns-esc-char.ls.input b/tests/c-ns-esc-char.ls.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.ls.input
@@ -0,0 +1,1 @@
+\L
diff --git a/tests/c-ns-esc-char.ls.output b/tests/c-ns-esc-char.ls.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.ls.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+tL
+e
diff --git a/tests/c-ns-esc-char.nbsp.input b/tests/c-ns-esc-char.nbsp.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.nbsp.input
@@ -0,0 +1,1 @@
+\_
diff --git a/tests/c-ns-esc-char.nbsp.output b/tests/c-ns-esc-char.nbsp.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.nbsp.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+t_
+e
diff --git a/tests/c-ns-esc-char.nl.input b/tests/c-ns-esc-char.nl.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.nl.input
@@ -0,0 +1,1 @@
+\N
diff --git a/tests/c-ns-esc-char.nl.output b/tests/c-ns-esc-char.nl.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.nl.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+tN
+e
diff --git a/tests/c-ns-esc-char.null.input b/tests/c-ns-esc-char.null.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.null.input
@@ -0,0 +1,1 @@
+\0
diff --git a/tests/c-ns-esc-char.null.output b/tests/c-ns-esc-char.null.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.null.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+t0
+e
diff --git a/tests/c-ns-esc-char.ps.input b/tests/c-ns-esc-char.ps.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.ps.input
@@ -0,0 +1,1 @@
+\P
diff --git a/tests/c-ns-esc-char.ps.output b/tests/c-ns-esc-char.ps.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.ps.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+tP
+e
diff --git a/tests/c-ns-esc-char.sp.input b/tests/c-ns-esc-char.sp.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.sp.input
@@ -0,0 +1,1 @@
+\ 
diff --git a/tests/c-ns-esc-char.sp.output b/tests/c-ns-esc-char.sp.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.sp.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+t 
+e
diff --git a/tests/c-ns-esc-char.tab.input b/tests/c-ns-esc-char.tab.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.tab.input
@@ -0,0 +1,1 @@
+\t
diff --git a/tests/c-ns-esc-char.tab.output b/tests/c-ns-esc-char.tab.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.tab.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+tt
+e
diff --git a/tests/c-ns-esc-char.vt.input b/tests/c-ns-esc-char.vt.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.vt.input
@@ -0,0 +1,1 @@
+\v
diff --git a/tests/c-ns-esc-char.vt.output b/tests/c-ns-esc-char.vt.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-esc-char.vt.output
@@ -0,0 +1,5 @@
+E
+I\x5c
+!Commit to 'escape' was made outside it
+tv
+e
diff --git a/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.input b/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.input
@@ -0,0 +1,1 @@
+: a
diff --git a/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.input b/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.input
@@ -0,0 +1,1 @@
+:"a"
diff --git a/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.output b/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.output
@@ -0,0 +1,11 @@
+N
+S
+s
+n
+I:
+!Commit to 'pair' was made outside it
+N
+S
+s
+n
+!$InputFile$: line 1: column 1: Expected end of input
diff --git a/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.output b/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-flow-map-empty-key-entry.n=4.c=flow-in.output
@@ -0,0 +1,13 @@
+N
+S
+s
+n
+I:
+!Commit to 'pair' was made outside it
+w 
+N
+S
+!Commit to 'node' was made outside it
+Ta
+s
+n
diff --git a/tests/c-ns-properties.n=0.c=block-in.input b/tests/c-ns-properties.n=0.c=block-in.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-properties.n=0.c=block-in.input
@@ -0,0 +1,1 @@
+&&*!name !suffix
diff --git a/tests/c-ns-properties.n=0.c=block-in.invalid.input b/tests/c-ns-properties.n=0.c=block-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-properties.n=0.c=block-in.invalid.input
@@ -0,0 +1,1 @@
+@a
diff --git a/tests/c-ns-properties.n=0.c=block-in.invalid.output b/tests/c-ns-properties.n=0.c=block-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-properties.n=0.c=block-in.invalid.output
@@ -0,0 +1,3 @@
+P
+A
+!$InputFile$: line 1: column 0: Unexpected '@'
diff --git a/tests/c-ns-properties.n=0.c=block-in.output b/tests/c-ns-properties.n=0.c=block-in.output
new file mode 100644
--- /dev/null
+++ b/tests/c-ns-properties.n=0.c=block-in.output
@@ -0,0 +1,13 @@
+P
+A
+I&
+t&*!name
+a
+w 
+G
+H
+I!
+h
+tsuffix
+g
+p
diff --git a/tests/c-ns-properties.n=0.c=block-out.invalid.input b/tests/c-ns-properties.n=0.c=block-out.invalid.input
deleted file mode 100644
--- a/tests/c-ns-properties.n=0.c=block-out.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-@a
diff --git a/tests/c-ns-properties.n=0.c=block-out.invalid.output b/tests/c-ns-properties.n=0.c=block-out.invalid.output
deleted file mode 100644
--- a/tests/c-ns-properties.n=0.c=block-out.invalid.output
+++ /dev/null
@@ -1,3 +0,0 @@
-P
-G
-!$InputFile$: line 1: column 0: Unexpected '@'
diff --git a/tests/c-ns-property.anchor.input b/tests/c-ns-property.anchor.input
deleted file mode 100644
--- a/tests/c-ns-property.anchor.input
+++ /dev/null
@@ -1,1 +0,0 @@
-&&*!name
diff --git a/tests/c-ns-property.anchor.output b/tests/c-ns-property.anchor.output
deleted file mode 100644
--- a/tests/c-ns-property.anchor.output
+++ /dev/null
@@ -1,4 +0,0 @@
-A
-I&
-t&*!name
-a
diff --git a/tests/c-ns-property.invalid.input b/tests/c-ns-property.invalid.input
deleted file mode 100644
--- a/tests/c-ns-property.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-^a
diff --git a/tests/c-ns-property.invalid.output b/tests/c-ns-property.invalid.output
deleted file mode 100644
--- a/tests/c-ns-property.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-G
-!$InputFile$: line 1: column 0: Unexpected '^'
diff --git a/tests/c-ns-property.tag.input b/tests/c-ns-property.tag.input
deleted file mode 100644
--- a/tests/c-ns-property.tag.input
+++ /dev/null
@@ -1,1 +0,0 @@
-!suffix
diff --git a/tests/c-ns-property.tag.output b/tests/c-ns-property.tag.output
deleted file mode 100644
--- a/tests/c-ns-property.tag.output
+++ /dev/null
@@ -1,6 +0,0 @@
-G
-H
-I!
-h
-tsuffix
-g
diff --git a/tests/c-style-indicator.s=folded.input b/tests/c-style-indicator.s=folded.input
deleted file mode 100644
--- a/tests/c-style-indicator.s=folded.input
+++ /dev/null
@@ -1,1 +0,0 @@
->
diff --git a/tests/c-style-indicator.s=folded.output b/tests/c-style-indicator.s=folded.output
deleted file mode 100644
--- a/tests/c-style-indicator.s=folded.output
+++ /dev/null
@@ -1,1 +0,0 @@
-I>
diff --git a/tests/c-style-indicator.s=literal.input b/tests/c-style-indicator.s=literal.input
deleted file mode 100644
--- a/tests/c-style-indicator.s=literal.input
+++ /dev/null
@@ -1,1 +0,0 @@
-|
diff --git a/tests/c-style-indicator.s=literal.invalid.input b/tests/c-style-indicator.s=literal.invalid.input
deleted file mode 100644
--- a/tests/c-style-indicator.s=literal.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-+
diff --git a/tests/c-style-indicator.s=literal.invalid.output b/tests/c-style-indicator.s=literal.invalid.output
deleted file mode 100644
--- a/tests/c-style-indicator.s=literal.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected '+'
diff --git a/tests/c-style-indicator.s=literal.output b/tests/c-style-indicator.s=literal.output
deleted file mode 100644
--- a/tests/c-style-indicator.s=literal.output
+++ /dev/null
@@ -1,1 +0,0 @@
-I|
diff --git a/tests/e-no-document.input b/tests/e-no-document.input
deleted file mode 100644
--- a/tests/e-no-document.input
+++ /dev/null
diff --git a/tests/e-no-document.output b/tests/e-no-document.output
deleted file mode 100644
--- a/tests/e-no-document.output
+++ /dev/null
diff --git a/tests/l-empty.n=4.c=block-in.indent-lt.input b/tests/l-empty.n=4.c=block-in.indent-lt.input
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=block-in.indent-lt.input
@@ -0,0 +1,1 @@
+   
diff --git a/tests/l-empty.n=4.c=block-in.indent-lt.output b/tests/l-empty.n=4.c=block-in.indent-lt.output
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=block-in.indent-lt.output
@@ -0,0 +1,2 @@
+i   
+L\x0a
diff --git a/tests/l-empty.n=4.c=block-in.indent-sp.invalid.input b/tests/l-empty.n=4.c=block-in.indent-sp.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=block-in.indent-sp.invalid.input
@@ -0,0 +1,1 @@
+     
diff --git a/tests/l-empty.n=4.c=block-in.indent-sp.invalid.output b/tests/l-empty.n=4.c=block-in.indent-sp.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=block-in.indent-sp.invalid.output
@@ -0,0 +1,2 @@
+i    
+!$InputFile$: line 1: column 4: Unexpected ' '
diff --git a/tests/l-empty.n=4.c=block-in.indent.input b/tests/l-empty.n=4.c=block-in.indent.input
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=block-in.indent.input
@@ -0,0 +1,1 @@
+    
diff --git a/tests/l-empty.n=4.c=block-in.indent.output b/tests/l-empty.n=4.c=block-in.indent.output
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=block-in.indent.output
@@ -0,0 +1,2 @@
+i    
+L\x0a
diff --git a/tests/l-empty.n=4.c=flow-in.indent-lt.input b/tests/l-empty.n=4.c=flow-in.indent-lt.input
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=flow-in.indent-lt.input
@@ -0,0 +1,1 @@
+   
diff --git a/tests/l-empty.n=4.c=flow-in.indent-lt.output b/tests/l-empty.n=4.c=flow-in.indent-lt.output
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=flow-in.indent-lt.output
@@ -0,0 +1,2 @@
+i   
+L\x0a
diff --git a/tests/l-empty.n=4.c=flow-in.indent-sp.input b/tests/l-empty.n=4.c=flow-in.indent-sp.input
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=flow-in.indent-sp.input
@@ -0,0 +1,1 @@
+     
diff --git a/tests/l-empty.n=4.c=flow-in.indent-sp.output b/tests/l-empty.n=4.c=flow-in.indent-sp.output
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=flow-in.indent-sp.output
@@ -0,0 +1,3 @@
+i    
+w 
+L\x0a
diff --git a/tests/l-empty.n=4.c=flow-in.indent.input b/tests/l-empty.n=4.c=flow-in.indent.input
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=flow-in.indent.input
@@ -0,0 +1,1 @@
+    
diff --git a/tests/l-empty.n=4.c=flow-in.indent.output b/tests/l-empty.n=4.c=flow-in.indent.output
new file mode 100644
--- /dev/null
+++ b/tests/l-empty.n=4.c=flow-in.indent.output
@@ -0,0 +1,2 @@
+i    
+L\x0a
diff --git a/tests/l-empty.n=4.s=literal.indent-lt.input b/tests/l-empty.n=4.s=literal.indent-lt.input
deleted file mode 100644
--- a/tests/l-empty.n=4.s=literal.indent-lt.input
+++ /dev/null
@@ -1,1 +0,0 @@
-   
diff --git a/tests/l-empty.n=4.s=literal.indent-lt.output b/tests/l-empty.n=4.s=literal.indent-lt.output
deleted file mode 100644
--- a/tests/l-empty.n=4.s=literal.indent-lt.output
+++ /dev/null
@@ -1,2 +0,0 @@
-i   
-L\x0a
diff --git a/tests/l-empty.n=4.s=literal.indent-sp.invalid.input b/tests/l-empty.n=4.s=literal.indent-sp.invalid.input
deleted file mode 100644
--- a/tests/l-empty.n=4.s=literal.indent-sp.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-     
diff --git a/tests/l-empty.n=4.s=literal.indent-sp.invalid.output b/tests/l-empty.n=4.s=literal.indent-sp.invalid.output
deleted file mode 100644
--- a/tests/l-empty.n=4.s=literal.indent-sp.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-i    
-!$InputFile$: line 1: column 4: Unexpected ' '
diff --git a/tests/l-empty.n=4.s=literal.indent.input b/tests/l-empty.n=4.s=literal.indent.input
deleted file mode 100644
--- a/tests/l-empty.n=4.s=literal.indent.input
+++ /dev/null
@@ -1,1 +0,0 @@
-    
diff --git a/tests/l-empty.n=4.s=literal.indent.output b/tests/l-empty.n=4.s=literal.indent.output
deleted file mode 100644
--- a/tests/l-empty.n=4.s=literal.indent.output
+++ /dev/null
@@ -1,2 +0,0 @@
-i    
-L\x0a
diff --git a/tests/l-empty.n=4.s=plain.indent-lt.input b/tests/l-empty.n=4.s=plain.indent-lt.input
deleted file mode 100644
--- a/tests/l-empty.n=4.s=plain.indent-lt.input
+++ /dev/null
@@ -1,1 +0,0 @@
-   
diff --git a/tests/l-empty.n=4.s=plain.indent-lt.output b/tests/l-empty.n=4.s=plain.indent-lt.output
deleted file mode 100644
--- a/tests/l-empty.n=4.s=plain.indent-lt.output
+++ /dev/null
@@ -1,2 +0,0 @@
-i   
-L\x0a
diff --git a/tests/l-empty.n=4.s=plain.indent-sp.input b/tests/l-empty.n=4.s=plain.indent-sp.input
deleted file mode 100644
--- a/tests/l-empty.n=4.s=plain.indent-sp.input
+++ /dev/null
@@ -1,1 +0,0 @@
-     
diff --git a/tests/l-empty.n=4.s=plain.indent-sp.output b/tests/l-empty.n=4.s=plain.indent-sp.output
deleted file mode 100644
--- a/tests/l-empty.n=4.s=plain.indent-sp.output
+++ /dev/null
@@ -1,3 +0,0 @@
-i    
-w 
-L\x0a
diff --git a/tests/l-empty.n=4.s=plain.indent.input b/tests/l-empty.n=4.s=plain.indent.input
deleted file mode 100644
--- a/tests/l-empty.n=4.s=plain.indent.input
+++ /dev/null
@@ -1,1 +0,0 @@
-    
diff --git a/tests/l-empty.n=4.s=plain.indent.output b/tests/l-empty.n=4.s=plain.indent.output
deleted file mode 100644
--- a/tests/l-empty.n=4.s=plain.indent.output
+++ /dev/null
@@ -1,2 +0,0 @@
-i    
-L\x0a
diff --git a/tests/l-implicit-document.invalid.output b/tests/l-implicit-document.invalid.output
--- a/tests/l-implicit-document.invalid.output
+++ b/tests/l-implicit-document.invalid.output
@@ -1,4 +1,5 @@
 O
 N
-S
+P
+A
 !$InputFile$: line 1: column 0: Unexpected forbidden pattern
diff --git a/tests/l-implicit-document.literal.output b/tests/l-implicit-document.literal.output
--- a/tests/l-implicit-document.literal.output
+++ b/tests/l-implicit-document.literal.output
@@ -2,7 +2,6 @@
 N
 S
 I|
-!Commit to 'node' was made outside it
 b\x0a
 Ta
 L\x0a
diff --git a/tests/l-nb-diff-lines.n=3.input b/tests/l-nb-diff-lines.n=3.input
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-diff-lines.n=3.input
@@ -0,0 +1,6 @@
+  
+   a
+
+   b
+
+    c
diff --git a/tests/l-nb-diff-lines.n=3.output b/tests/l-nb-diff-lines.n=3.output
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-diff-lines.n=3.output
@@ -0,0 +1,12 @@
+i  
+L\x0a
+i   
+?a
+b\x0a
+L\x0a
+i   
+?b
+L\x0a
+L\x0a
+i   
+? c
diff --git a/tests/l-nb-literal-chars.n=4.input b/tests/l-nb-literal-chars.n=4.input
deleted file mode 100644
--- a/tests/l-nb-literal-chars.n=4.input
+++ /dev/null
@@ -1,3 +0,0 @@
-
-  
-      a  
diff --git a/tests/l-nb-literal-chars.n=4.invalid.input b/tests/l-nb-literal-chars.n=4.invalid.input
deleted file mode 100644
--- a/tests/l-nb-literal-chars.n=4.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-  a
diff --git a/tests/l-nb-literal-chars.n=4.invalid.output b/tests/l-nb-literal-chars.n=4.invalid.output
deleted file mode 100644
--- a/tests/l-nb-literal-chars.n=4.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 2: Unexpected 'a'
diff --git a/tests/l-nb-literal-chars.n=4.output b/tests/l-nb-literal-chars.n=4.output
deleted file mode 100644
--- a/tests/l-nb-literal-chars.n=4.output
+++ /dev/null
@@ -1,5 +0,0 @@
-L\x0a
-i  
-L\x0a
-i    
-?  a  
diff --git a/tests/l-nb-literal-text.n=4.input b/tests/l-nb-literal-text.n=4.input
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-literal-text.n=4.input
@@ -0,0 +1,3 @@
+
+  
+      a  
diff --git a/tests/l-nb-literal-text.n=4.invalid.input b/tests/l-nb-literal-text.n=4.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-literal-text.n=4.invalid.input
@@ -0,0 +1,1 @@
+  a
diff --git a/tests/l-nb-literal-text.n=4.invalid.output b/tests/l-nb-literal-text.n=4.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-literal-text.n=4.invalid.output
@@ -0,0 +1,1 @@
+!$InputFile$: line 1: column 2: Unexpected 'a'
diff --git a/tests/l-nb-literal-text.n=4.output b/tests/l-nb-literal-text.n=4.output
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-literal-text.n=4.output
@@ -0,0 +1,5 @@
+L\x0a
+i  
+L\x0a
+i    
+?  a  
diff --git a/tests/l-nb-same-lines.n=3.input b/tests/l-nb-same-lines.n=3.input
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-same-lines.n=3.input
@@ -0,0 +1,4 @@
+  
+    a
+
+    b
diff --git a/tests/l-nb-same-lines.n=3.output b/tests/l-nb-same-lines.n=3.output
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-same-lines.n=3.output
@@ -0,0 +1,8 @@
+i  
+L\x0a
+i   
+? a
+L\x0a
+L\x0a
+i   
+? b
diff --git a/tests/l-nb-same-lines.n=4.input b/tests/l-nb-same-lines.n=4.input
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-same-lines.n=4.input
@@ -0,0 +1,4 @@
+  
+    a
+
+    b
diff --git a/tests/l-nb-same-lines.n=4.output b/tests/l-nb-same-lines.n=4.output
new file mode 100644
--- /dev/null
+++ b/tests/l-nb-same-lines.n=4.output
@@ -0,0 +1,8 @@
+i  
+L\x0a
+i    
+?a
+b\x0a
+L\x0a
+i    
+?b
diff --git a/tests/l-nb-start-with-any.n=4.folded.input b/tests/l-nb-start-with-any.n=4.folded.input
deleted file mode 100644
--- a/tests/l-nb-start-with-any.n=4.folded.input
+++ /dev/null
@@ -1,4 +0,0 @@
-    a
-     b
-
-    c
diff --git a/tests/l-nb-start-with-any.n=4.folded.output b/tests/l-nb-start-with-any.n=4.folded.output
deleted file mode 100644
--- a/tests/l-nb-start-with-any.n=4.folded.output
+++ /dev/null
@@ -1,9 +0,0 @@
-i    
-?a
-L\x0a
-i    
-? b
-L\x0a
-L\x0a
-i    
-?c
diff --git a/tests/l-nb-start-with-any.n=4.invalid.input b/tests/l-nb-start-with-any.n=4.invalid.input
deleted file mode 100644
--- a/tests/l-nb-start-with-any.n=4.invalid.input
+++ /dev/null
@@ -1,2 +0,0 @@
-  
-  a
diff --git a/tests/l-nb-start-with-any.n=4.invalid.output b/tests/l-nb-start-with-any.n=4.invalid.output
deleted file mode 100644
--- a/tests/l-nb-start-with-any.n=4.invalid.output
+++ /dev/null
@@ -1,3 +0,0 @@
-i  
-L\x0a
-!$InputFile$: line 2: column 2: Unexpected 'a'
diff --git a/tests/l-nb-start-with-any.n=4.spaced.input b/tests/l-nb-start-with-any.n=4.spaced.input
deleted file mode 100644
--- a/tests/l-nb-start-with-any.n=4.spaced.input
+++ /dev/null
@@ -1,4 +0,0 @@
-     a
-    b
-
-     c
diff --git a/tests/l-nb-start-with-any.n=4.spaced.output b/tests/l-nb-start-with-any.n=4.spaced.output
deleted file mode 100644
--- a/tests/l-nb-start-with-any.n=4.spaced.output
+++ /dev/null
@@ -1,9 +0,0 @@
-i    
-? a
-L\x0a
-i    
-?b
-L\x0a
-L\x0a
-i    
-? c
diff --git a/tests/l-nb-start-with-folded.n=4.input b/tests/l-nb-start-with-folded.n=4.input
deleted file mode 100644
--- a/tests/l-nb-start-with-folded.n=4.input
+++ /dev/null
@@ -1,5 +0,0 @@
-  
-    a
-     b
-
-    c
diff --git a/tests/l-nb-start-with-folded.n=4.invalid.input b/tests/l-nb-start-with-folded.n=4.invalid.input
deleted file mode 100644
--- a/tests/l-nb-start-with-folded.n=4.invalid.input
+++ /dev/null
@@ -1,2 +0,0 @@
-  
-  a
diff --git a/tests/l-nb-start-with-folded.n=4.invalid.output b/tests/l-nb-start-with-folded.n=4.invalid.output
deleted file mode 100644
--- a/tests/l-nb-start-with-folded.n=4.invalid.output
+++ /dev/null
@@ -1,3 +0,0 @@
-i  
-L\x0a
-!$InputFile$: line 2: column 2: Unexpected 'a'
diff --git a/tests/l-nb-start-with-folded.n=4.output b/tests/l-nb-start-with-folded.n=4.output
deleted file mode 100644
--- a/tests/l-nb-start-with-folded.n=4.output
+++ /dev/null
@@ -1,14 +0,0 @@
-i  
-L\x0a
-i    
-!Commit to 'fold' was made outside it
-?a
-L\x0a
-i    
-!Commit to 'fold' was made outside it
-? b
-L\x0a
-L\x0a
-i    
-!Commit to 'fold' was made outside it
-?c
diff --git a/tests/l-nb-start-with-spaced.n=4.input b/tests/l-nb-start-with-spaced.n=4.input
deleted file mode 100644
--- a/tests/l-nb-start-with-spaced.n=4.input
+++ /dev/null
@@ -1,4 +0,0 @@
-     a
-    b
-
-     c
diff --git a/tests/l-nb-start-with-spaced.n=4.invalid.input b/tests/l-nb-start-with-spaced.n=4.invalid.input
deleted file mode 100644
--- a/tests/l-nb-start-with-spaced.n=4.invalid.input
+++ /dev/null
@@ -1,2 +0,0 @@
-  
-    a
diff --git a/tests/l-nb-start-with-spaced.n=4.invalid.output b/tests/l-nb-start-with-spaced.n=4.invalid.output
deleted file mode 100644
--- a/tests/l-nb-start-with-spaced.n=4.invalid.output
+++ /dev/null
@@ -1,4 +0,0 @@
-i  
-L\x0a
-i    
-!$InputFile$: line 2: column 4: Unexpected 'a'
diff --git a/tests/l-nb-start-with-spaced.n=4.output b/tests/l-nb-start-with-spaced.n=4.output
deleted file mode 100644
--- a/tests/l-nb-start-with-spaced.n=4.output
+++ /dev/null
@@ -1,12 +0,0 @@
-i    
-!Commit to 'fold' was made outside it
-? a
-L\x0a
-i    
-!Commit to 'fold' was made outside it
-?b
-L\x0a
-L\x0a
-i    
-!Commit to 'fold' was made outside it
-? c
diff --git a/tests/nb-double-char.double-quote.invalid.output b/tests/nb-double-char.double-quote.invalid.output
--- a/tests/nb-double-char.double-quote.invalid.output
+++ b/tests/nb-double-char.double-quote.invalid.output
@@ -1,1 +1,2 @@
+E
 !$InputFile$: line 1: column 0: Unexpected '"'
diff --git a/tests/nb-double-multi-line.n=4.input b/tests/nb-double-multi-line.n=4.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-double-multi-line.n=4.input
@@ -0,0 +1,2 @@
+ a 
+    	a b	c 
diff --git a/tests/nb-double-multi-line.n=4.invalid.input b/tests/nb-double-multi-line.n=4.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-double-multi-line.n=4.invalid.input
@@ -0,0 +1,1 @@
+a
diff --git a/tests/nb-double-multi-line.n=4.invalid.output b/tests/nb-double-multi-line.n=4.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-double-multi-line.n=4.invalid.output
@@ -0,0 +1,2 @@
+?a
+!$InputFile$: line 1: column 1: Expected end of input
diff --git a/tests/nb-double-multi-line.n=4.output b/tests/nb-double-multi-line.n=4.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-double-multi-line.n=4.output
@@ -0,0 +1,6 @@
+? a
+w 
+l\x0a
+i    
+w\x09
+?a b\x09c 
diff --git a/tests/nb-double-one-line.input b/tests/nb-double-one-line.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-double-one-line.input
@@ -0,0 +1,1 @@
+ a b 
diff --git a/tests/nb-double-one-line.output b/tests/nb-double-one-line.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-double-one-line.output
@@ -0,0 +1,1 @@
+? a b 
diff --git a/tests/nb-ns-double-in-line.input b/tests/nb-ns-double-in-line.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-double-in-line.input
@@ -0,0 +1,1 @@
+ 	a
diff --git a/tests/nb-ns-double-in-line.invalid.input b/tests/nb-ns-double-in-line.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-double-in-line.invalid.input
@@ -0,0 +1,1 @@
+\q
diff --git a/tests/nb-ns-double-in-line.invalid.output b/tests/nb-ns-double-in-line.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-double-in-line.invalid.output
@@ -0,0 +1,1 @@
+!$InputFile$: line 1: column 0: Expected end of input
diff --git a/tests/nb-ns-double-in-line.output b/tests/nb-ns-double-in-line.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-double-in-line.output
@@ -0,0 +1,1 @@
+? \x09a
diff --git a/tests/nb-ns-plain-in-line.c=flow-in.input b/tests/nb-ns-plain-in-line.c=flow-in.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-plain-in-line.c=flow-in.input
@@ -0,0 +1,1 @@
+ 	a
diff --git a/tests/nb-ns-plain-in-line.c=flow-in.invalid.input b/tests/nb-ns-plain-in-line.c=flow-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-plain-in-line.c=flow-in.invalid.input
@@ -0,0 +1,1 @@
+ ,
diff --git a/tests/nb-ns-plain-in-line.c=flow-in.invalid.output b/tests/nb-ns-plain-in-line.c=flow-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-plain-in-line.c=flow-in.invalid.output
@@ -0,0 +1,1 @@
+!$InputFile$: line 1: column 0: Expected end of input
diff --git a/tests/nb-ns-plain-in-line.c=flow-in.output b/tests/nb-ns-plain-in-line.c=flow-in.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-plain-in-line.c=flow-in.output
@@ -0,0 +1,1 @@
+? \x09a
diff --git a/tests/nb-ns-single-in-line.input b/tests/nb-ns-single-in-line.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-single-in-line.input
@@ -0,0 +1,1 @@
+ 	a
diff --git a/tests/nb-ns-single-in-line.invalid.input b/tests/nb-ns-single-in-line.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-single-in-line.invalid.input
@@ -0,0 +1,1 @@
+  'a
diff --git a/tests/nb-ns-single-in-line.invalid.output b/tests/nb-ns-single-in-line.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-single-in-line.invalid.output
@@ -0,0 +1,1 @@
+!$InputFile$: line 1: column 0: Expected end of input
diff --git a/tests/nb-ns-single-in-line.output b/tests/nb-ns-single-in-line.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-ns-single-in-line.output
@@ -0,0 +1,1 @@
+? \x09a
diff --git a/tests/nb-single-multi-line.n=4.input b/tests/nb-single-multi-line.n=4.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-single-multi-line.n=4.input
@@ -0,0 +1,2 @@
+ a 
+    	a b	c 
diff --git a/tests/nb-single-multi-line.n=4.invalid.input b/tests/nb-single-multi-line.n=4.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-single-multi-line.n=4.invalid.input
@@ -0,0 +1,2 @@
+ a
+  b
diff --git a/tests/nb-single-multi-line.n=4.invalid.output b/tests/nb-single-multi-line.n=4.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-single-multi-line.n=4.invalid.output
@@ -0,0 +1,2 @@
+? a
+!$InputFile$: line 1: column 2: Expected end of input
diff --git a/tests/nb-single-multi-line.n=4.output b/tests/nb-single-multi-line.n=4.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-single-multi-line.n=4.output
@@ -0,0 +1,6 @@
+? a
+w 
+l\x0a
+i    
+w\x09
+?a b\x09c 
diff --git a/tests/nb-single-one-line.input b/tests/nb-single-one-line.input
new file mode 100644
--- /dev/null
+++ b/tests/nb-single-one-line.input
@@ -0,0 +1,1 @@
+ s''q 
diff --git a/tests/nb-single-one-line.output b/tests/nb-single-one-line.output
new file mode 100644
--- /dev/null
+++ b/tests/nb-single-one-line.output
@@ -0,0 +1,6 @@
+? s
+E
+I'
+t'
+e
+?q 
diff --git a/tests/ns-anchor-char.input b/tests/ns-anchor-char.input
--- a/tests/ns-anchor-char.input
+++ b/tests/ns-anchor-char.input
@@ -1,1 +1,1 @@
-@
+a
diff --git a/tests/ns-anchor-char.output b/tests/ns-anchor-char.output
--- a/tests/ns-anchor-char.output
+++ b/tests/ns-anchor-char.output
@@ -1,1 +1,1 @@
-?@
+?a
diff --git a/tests/ns-esc-char.16-bit.input b/tests/ns-esc-char.16-bit.input
deleted file mode 100644
--- a/tests/ns-esc-char.16-bit.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\uFEDC
diff --git a/tests/ns-esc-char.16-bit.output b/tests/ns-esc-char.16-bit.output
deleted file mode 100644
--- a/tests/ns-esc-char.16-bit.output
+++ /dev/null
@@ -1,6 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-Iu
-tFEDC
-e
diff --git a/tests/ns-esc-char.32-bit.input b/tests/ns-esc-char.32-bit.input
deleted file mode 100644
--- a/tests/ns-esc-char.32-bit.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\U0010FEDC
diff --git a/tests/ns-esc-char.32-bit.output b/tests/ns-esc-char.32-bit.output
deleted file mode 100644
--- a/tests/ns-esc-char.32-bit.output
+++ /dev/null
@@ -1,6 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-IU
-t0010FEDC
-e
diff --git a/tests/ns-esc-char.8-bit.input b/tests/ns-esc-char.8-bit.input
deleted file mode 100644
--- a/tests/ns-esc-char.8-bit.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\xFF
diff --git a/tests/ns-esc-char.8-bit.output b/tests/ns-esc-char.8-bit.output
deleted file mode 100644
--- a/tests/ns-esc-char.8-bit.output
+++ /dev/null
@@ -1,6 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-Ix
-tFF
-e
diff --git a/tests/ns-esc-char.backslash.input b/tests/ns-esc-char.backslash.input
deleted file mode 100644
--- a/tests/ns-esc-char.backslash.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\\
diff --git a/tests/ns-esc-char.backslash.output b/tests/ns-esc-char.backslash.output
deleted file mode 100644
--- a/tests/ns-esc-char.backslash.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-t\x5c
-e
diff --git a/tests/ns-esc-char.bell.input b/tests/ns-esc-char.bell.input
deleted file mode 100644
--- a/tests/ns-esc-char.bell.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\a
diff --git a/tests/ns-esc-char.bell.output b/tests/ns-esc-char.bell.output
deleted file mode 100644
--- a/tests/ns-esc-char.bell.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-ta
-e
diff --git a/tests/ns-esc-char.bs.input b/tests/ns-esc-char.bs.input
deleted file mode 100644
--- a/tests/ns-esc-char.bs.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\b
diff --git a/tests/ns-esc-char.bs.output b/tests/ns-esc-char.bs.output
deleted file mode 100644
--- a/tests/ns-esc-char.bs.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-tb
-e
diff --git a/tests/ns-esc-char.cr.input b/tests/ns-esc-char.cr.input
deleted file mode 100644
--- a/tests/ns-esc-char.cr.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\r
diff --git a/tests/ns-esc-char.cr.output b/tests/ns-esc-char.cr.output
deleted file mode 100644
--- a/tests/ns-esc-char.cr.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-tr
-e
diff --git a/tests/ns-esc-char.double-quote.input b/tests/ns-esc-char.double-quote.input
deleted file mode 100644
--- a/tests/ns-esc-char.double-quote.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\"
diff --git a/tests/ns-esc-char.double-quote.output b/tests/ns-esc-char.double-quote.output
deleted file mode 100644
--- a/tests/ns-esc-char.double-quote.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-t"
-e
diff --git a/tests/ns-esc-char.esc.input b/tests/ns-esc-char.esc.input
deleted file mode 100644
--- a/tests/ns-esc-char.esc.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\e
diff --git a/tests/ns-esc-char.esc.output b/tests/ns-esc-char.esc.output
deleted file mode 100644
--- a/tests/ns-esc-char.esc.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-te
-e
diff --git a/tests/ns-esc-char.ff.input b/tests/ns-esc-char.ff.input
deleted file mode 100644
--- a/tests/ns-esc-char.ff.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\f
diff --git a/tests/ns-esc-char.ff.output b/tests/ns-esc-char.ff.output
deleted file mode 100644
--- a/tests/ns-esc-char.ff.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-tf
-e
diff --git a/tests/ns-esc-char.lf.input b/tests/ns-esc-char.lf.input
deleted file mode 100644
--- a/tests/ns-esc-char.lf.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\n
diff --git a/tests/ns-esc-char.lf.output b/tests/ns-esc-char.lf.output
deleted file mode 100644
--- a/tests/ns-esc-char.lf.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-tn
-e
diff --git a/tests/ns-esc-char.ls.input b/tests/ns-esc-char.ls.input
deleted file mode 100644
--- a/tests/ns-esc-char.ls.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\L
diff --git a/tests/ns-esc-char.ls.output b/tests/ns-esc-char.ls.output
deleted file mode 100644
--- a/tests/ns-esc-char.ls.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-tL
-e
diff --git a/tests/ns-esc-char.nbsp.input b/tests/ns-esc-char.nbsp.input
deleted file mode 100644
--- a/tests/ns-esc-char.nbsp.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\_
diff --git a/tests/ns-esc-char.nbsp.output b/tests/ns-esc-char.nbsp.output
deleted file mode 100644
--- a/tests/ns-esc-char.nbsp.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-t_
-e
diff --git a/tests/ns-esc-char.nl.input b/tests/ns-esc-char.nl.input
deleted file mode 100644
--- a/tests/ns-esc-char.nl.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\N
diff --git a/tests/ns-esc-char.nl.output b/tests/ns-esc-char.nl.output
deleted file mode 100644
--- a/tests/ns-esc-char.nl.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-tN
-e
diff --git a/tests/ns-esc-char.null.input b/tests/ns-esc-char.null.input
deleted file mode 100644
--- a/tests/ns-esc-char.null.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\0
diff --git a/tests/ns-esc-char.null.output b/tests/ns-esc-char.null.output
deleted file mode 100644
--- a/tests/ns-esc-char.null.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-t0
-e
diff --git a/tests/ns-esc-char.ps.input b/tests/ns-esc-char.ps.input
deleted file mode 100644
--- a/tests/ns-esc-char.ps.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\P
diff --git a/tests/ns-esc-char.ps.output b/tests/ns-esc-char.ps.output
deleted file mode 100644
--- a/tests/ns-esc-char.ps.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-tP
-e
diff --git a/tests/ns-esc-char.sp.input b/tests/ns-esc-char.sp.input
deleted file mode 100644
--- a/tests/ns-esc-char.sp.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\ 
diff --git a/tests/ns-esc-char.sp.output b/tests/ns-esc-char.sp.output
deleted file mode 100644
--- a/tests/ns-esc-char.sp.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-t 
-e
diff --git a/tests/ns-esc-char.tab.input b/tests/ns-esc-char.tab.input
deleted file mode 100644
--- a/tests/ns-esc-char.tab.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\t
diff --git a/tests/ns-esc-char.tab.output b/tests/ns-esc-char.tab.output
deleted file mode 100644
--- a/tests/ns-esc-char.tab.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-tt
-e
diff --git a/tests/ns-esc-char.vt.input b/tests/ns-esc-char.vt.input
deleted file mode 100644
--- a/tests/ns-esc-char.vt.input
+++ /dev/null
@@ -1,1 +0,0 @@
-\v
diff --git a/tests/ns-esc-char.vt.output b/tests/ns-esc-char.vt.output
deleted file mode 100644
--- a/tests/ns-esc-char.vt.output
+++ /dev/null
@@ -1,5 +0,0 @@
-E
-I\x5c
-!Commit to 'escape' was made outside it
-tv
-e
diff --git a/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.input b/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.input
deleted file mode 100644
--- a/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.input
+++ /dev/null
@@ -1,1 +0,0 @@
-: a
diff --git a/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.input b/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.input
deleted file mode 100644
--- a/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-:"a"
diff --git a/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.output b/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.output
deleted file mode 100644
--- a/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.invalid.output
+++ /dev/null
@@ -1,11 +0,0 @@
-N
-S
-s
-n
-I:
-!Commit to 'pair' was made outside it
-N
-S
-s
-n
-!$InputFile$: line 1: column 1: Expected end of input
diff --git a/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.output b/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.output
deleted file mode 100644
--- a/tests/ns-flow-map-empty-key-entry.n=4.c=flow-in.output
+++ /dev/null
@@ -1,13 +0,0 @@
-N
-S
-s
-n
-I:
-!Commit to 'pair' was made outside it
-w 
-N
-S
-!Commit to 'node' was made outside it
-Ta
-s
-n
diff --git a/tests/ns-flow-map-entry.n=4.c=flow-in.invalid.output b/tests/ns-flow-map-entry.n=4.c=flow-in.invalid.output
--- a/tests/ns-flow-map-entry.n=4.c=flow-in.invalid.output
+++ b/tests/ns-flow-map-entry.n=4.c=flow-in.invalid.output
@@ -1,6 +1,4 @@
 X
 N
 S
-s
-n
 !$InputFile$: line 1: column 0: Unexpected end of input
diff --git a/tests/ns-flow-map-implicit-entry.n=4.c=flow-in.invalid.output b/tests/ns-flow-map-implicit-entry.n=4.c=flow-in.invalid.output
--- a/tests/ns-flow-map-implicit-entry.n=4.c=flow-in.invalid.output
+++ b/tests/ns-flow-map-implicit-entry.n=4.c=flow-in.invalid.output
@@ -1,5 +1,3 @@
 N
 S
-s
-n
 !$InputFile$: line 1: column 0: Unexpected '?'
diff --git a/tests/ns-flow-node.n=4.c=flow-in.invalid.output b/tests/ns-flow-node.n=4.c=flow-in.invalid.output
--- a/tests/ns-flow-node.n=4.c=flow-in.invalid.output
+++ b/tests/ns-flow-node.n=4.c=flow-in.invalid.output
@@ -1,3 +1,4 @@
 N
-S
+P
+A
 !$InputFile$: line 1: column 0: Unexpected '|'
diff --git a/tests/ns-flow-pair-entry.n=4.c=flow-in.invalid.output b/tests/ns-flow-pair-entry.n=4.c=flow-in.invalid.output
--- a/tests/ns-flow-pair-entry.n=4.c=flow-in.invalid.output
+++ b/tests/ns-flow-pair-entry.n=4.c=flow-in.invalid.output
@@ -1,5 +1,3 @@
 N
 S
-s
-n
 !$InputFile$: line 1: column 0: Unexpected 'a'
diff --git a/tests/ns-flow-pair.n=4.c=flow-in.invalid.output b/tests/ns-flow-pair.n=4.c=flow-in.invalid.output
--- a/tests/ns-flow-pair.n=4.c=flow-in.invalid.output
+++ b/tests/ns-flow-pair.n=4.c=flow-in.invalid.output
@@ -2,6 +2,4 @@
 X
 N
 S
-s
-n
 !$InputFile$: line 1: column 0: Unexpected 'a'
diff --git a/tests/ns-flow-seq-entry.n=4.c=flow-in.invalid.output b/tests/ns-flow-seq-entry.n=4.c=flow-in.invalid.output
--- a/tests/ns-flow-seq-entry.n=4.c=flow-in.invalid.output
+++ b/tests/ns-flow-seq-entry.n=4.c=flow-in.invalid.output
@@ -1,3 +1,4 @@
 N
-S
+P
+A
 !$InputFile$: line 1: column 0: Unexpected '#'
diff --git a/tests/ns-flow-yaml-node.n=4.c=flow-in.invalid.output b/tests/ns-flow-yaml-node.n=4.c=flow-in.invalid.output
--- a/tests/ns-flow-yaml-node.n=4.c=flow-in.invalid.output
+++ b/tests/ns-flow-yaml-node.n=4.c=flow-in.invalid.output
@@ -1,3 +1,4 @@
 N
-S
+P
+A
 !$InputFile$: line 1: column 0: Unexpected '''
diff --git a/tests/ns-l-block-map-entry.n=2.invalid.output b/tests/ns-l-block-map-entry.n=2.invalid.output
--- a/tests/ns-l-block-map-entry.n=2.invalid.output
+++ b/tests/ns-l-block-map-entry.n=2.invalid.output
@@ -1,6 +1,7 @@
 X
 N
 S
+Ta
 s
 n
-!$InputFile$: line 1: column 0: Unexpected 'a'
+!$InputFile$: line 1: column 1: Unexpected '\x0a'
diff --git a/tests/ns-plain-char.c=flow-in.ac.input b/tests/ns-plain-char.c=flow-in.ac.input
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.ac.input
+++ /dev/null
@@ -1,1 +0,0 @@
-a#
diff --git a/tests/ns-plain-char.c=flow-in.ac.output b/tests/ns-plain-char.c=flow-in.ac.output
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.ac.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?a#
diff --git a/tests/ns-plain-char.c=flow-in.acc.input b/tests/ns-plain-char.c=flow-in.acc.input
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.acc.input
+++ /dev/null
@@ -1,1 +0,0 @@
-a##
diff --git a/tests/ns-plain-char.c=flow-in.acc.output b/tests/ns-plain-char.c=flow-in.acc.output
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.acc.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?a##
diff --git a/tests/ns-plain-char.c=flow-in.c.input b/tests/ns-plain-char.c=flow-in.c.input
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.c.input
+++ /dev/null
@@ -1,1 +0,0 @@
-#
diff --git a/tests/ns-plain-char.c=flow-in.c.output b/tests/ns-plain-char.c=flow-in.c.output
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.c.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected '#'
diff --git a/tests/ns-plain-char.c=flow-in.m.input b/tests/ns-plain-char.c=flow-in.m.input
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.m.input
+++ /dev/null
@@ -1,1 +0,0 @@
-:
diff --git a/tests/ns-plain-char.c=flow-in.m.output b/tests/ns-plain-char.c=flow-in.m.output
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.m.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected ':'
diff --git a/tests/ns-plain-char.c=flow-in.ma.input b/tests/ns-plain-char.c=flow-in.ma.input
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.ma.input
+++ /dev/null
@@ -1,1 +0,0 @@
-:a
diff --git a/tests/ns-plain-char.c=flow-in.ma.output b/tests/ns-plain-char.c=flow-in.ma.output
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.ma.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?:a
diff --git a/tests/ns-plain-char.c=flow-in.mc.input b/tests/ns-plain-char.c=flow-in.mc.input
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.mc.input
+++ /dev/null
@@ -1,1 +0,0 @@
-:#
diff --git a/tests/ns-plain-char.c=flow-in.mc.output b/tests/ns-plain-char.c=flow-in.mc.output
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.mc.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?:#
diff --git a/tests/ns-plain-char.c=flow-in.mmcc.input b/tests/ns-plain-char.c=flow-in.mmcc.input
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.mmcc.input
+++ /dev/null
@@ -1,1 +0,0 @@
-::##
diff --git a/tests/ns-plain-char.c=flow-in.mmcc.output b/tests/ns-plain-char.c=flow-in.mmcc.output
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.mmcc.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?::##
diff --git a/tests/ns-plain-char.c=flow-in.mms.input b/tests/ns-plain-char.c=flow-in.mms.input
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.mms.input
+++ /dev/null
@@ -1,1 +0,0 @@
-::s
diff --git a/tests/ns-plain-char.c=flow-in.mms.output b/tests/ns-plain-char.c=flow-in.mms.output
deleted file mode 100644
--- a/tests/ns-plain-char.c=flow-in.mms.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?::s
diff --git a/tests/ns-plain-first.c=flow-in.d.output b/tests/ns-plain-first.c=flow-in.d.output
--- a/tests/ns-plain-first.c=flow-in.d.output
+++ b/tests/ns-plain-first.c=flow-in.d.output
@@ -1,1 +1,1 @@
-!$InputFile$: line 1: column 0: Unexpected '-'
+!$InputFile$: line 1: column 1: Unexpected end of input
diff --git a/tests/ns-plain-first.c=flow-in.da.input b/tests/ns-plain-first.c=flow-in.da.input
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.da.input
+++ /dev/null
@@ -1,1 +0,0 @@
--a
diff --git a/tests/ns-plain-first.c=flow-in.da.output b/tests/ns-plain-first.c=flow-in.da.output
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.da.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?-a
diff --git a/tests/ns-plain-first.c=flow-in.dc.input b/tests/ns-plain-first.c=flow-in.dc.input
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.dc.input
+++ /dev/null
@@ -1,1 +0,0 @@
--#
diff --git a/tests/ns-plain-first.c=flow-in.dc.output b/tests/ns-plain-first.c=flow-in.dc.output
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.dc.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?-#
diff --git a/tests/ns-plain-first.c=flow-in.ds.input b/tests/ns-plain-first.c=flow-in.ds.input
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.ds.input
+++ /dev/null
@@ -1,1 +0,0 @@
-- 
diff --git a/tests/ns-plain-first.c=flow-in.ds.output b/tests/ns-plain-first.c=flow-in.ds.output
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.ds.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected '-'
diff --git a/tests/ns-plain-first.c=flow-in.k.output b/tests/ns-plain-first.c=flow-in.k.output
--- a/tests/ns-plain-first.c=flow-in.k.output
+++ b/tests/ns-plain-first.c=flow-in.k.output
@@ -1,1 +1,1 @@
-!$InputFile$: line 1: column 0: Unexpected '?'
+!$InputFile$: line 1: column 1: Unexpected end of input
diff --git a/tests/ns-plain-first.c=flow-in.ka.input b/tests/ns-plain-first.c=flow-in.ka.input
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.ka.input
+++ /dev/null
@@ -1,1 +0,0 @@
-?a
diff --git a/tests/ns-plain-first.c=flow-in.ka.output b/tests/ns-plain-first.c=flow-in.ka.output
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.ka.output
+++ /dev/null
@@ -1,1 +0,0 @@
-??a
diff --git a/tests/ns-plain-first.c=flow-in.kc.input b/tests/ns-plain-first.c=flow-in.kc.input
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.kc.input
+++ /dev/null
@@ -1,1 +0,0 @@
-?#
diff --git a/tests/ns-plain-first.c=flow-in.kc.output b/tests/ns-plain-first.c=flow-in.kc.output
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.kc.output
+++ /dev/null
@@ -1,1 +0,0 @@
-??#
diff --git a/tests/ns-plain-first.c=flow-in.ks.input b/tests/ns-plain-first.c=flow-in.ks.input
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.ks.input
+++ /dev/null
@@ -1,1 +0,0 @@
-? 
diff --git a/tests/ns-plain-first.c=flow-in.ks.output b/tests/ns-plain-first.c=flow-in.ks.output
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.ks.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected '?'
diff --git a/tests/ns-plain-first.c=flow-in.v.output b/tests/ns-plain-first.c=flow-in.v.output
--- a/tests/ns-plain-first.c=flow-in.v.output
+++ b/tests/ns-plain-first.c=flow-in.v.output
@@ -1,1 +1,1 @@
-!$InputFile$: line 1: column 0: Unexpected ':'
+!$InputFile$: line 1: column 1: Unexpected end of input
diff --git a/tests/ns-plain-first.c=flow-in.va.input b/tests/ns-plain-first.c=flow-in.va.input
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.va.input
+++ /dev/null
@@ -1,1 +0,0 @@
-:a
diff --git a/tests/ns-plain-first.c=flow-in.va.output b/tests/ns-plain-first.c=flow-in.va.output
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.va.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?:a
diff --git a/tests/ns-plain-first.c=flow-in.vc.input b/tests/ns-plain-first.c=flow-in.vc.input
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.vc.input
+++ /dev/null
@@ -1,1 +0,0 @@
-:#
diff --git a/tests/ns-plain-first.c=flow-in.vc.output b/tests/ns-plain-first.c=flow-in.vc.output
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.vc.output
+++ /dev/null
@@ -1,1 +0,0 @@
-?:#
diff --git a/tests/ns-plain-first.c=flow-in.vs.input b/tests/ns-plain-first.c=flow-in.vs.input
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.vs.input
+++ /dev/null
@@ -1,1 +0,0 @@
-: 
diff --git a/tests/ns-plain-first.c=flow-in.vs.output b/tests/ns-plain-first.c=flow-in.vs.output
deleted file mode 100644
--- a/tests/ns-plain-first.c=flow-in.vs.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected ':'
diff --git a/tests/ns-plain-multi-line.n=4.c=flow-in.input b/tests/ns-plain-multi-line.n=4.c=flow-in.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain-multi-line.n=4.c=flow-in.input
@@ -0,0 +1,4 @@
+a	
+
+          b  
+      c
diff --git a/tests/ns-plain-multi-line.n=4.c=flow-in.invalid.input b/tests/ns-plain-multi-line.n=4.c=flow-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain-multi-line.n=4.c=flow-in.invalid.input
@@ -0,0 +1,2 @@
+a
+    12,345
diff --git a/tests/ns-plain-multi-line.n=4.c=flow-in.invalid.output b/tests/ns-plain-multi-line.n=4.c=flow-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain-multi-line.n=4.c=flow-in.invalid.output
@@ -0,0 +1,6 @@
+!Commit to 'node' was made outside it
+?a
+l\x0a
+i    
+?12
+!$InputFile$: line 2: column 6: Expected end of input
diff --git a/tests/ns-plain-multi-line.n=4.c=flow-in.output b/tests/ns-plain-multi-line.n=4.c=flow-in.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain-multi-line.n=4.c=flow-in.output
@@ -0,0 +1,13 @@
+!Commit to 'node' was made outside it
+?a
+w\x09
+b\x0a
+L\x0a
+i    
+w      
+?b
+w  
+l\x0a
+i    
+w  
+?c
diff --git a/tests/ns-plain-multi.n=4.c=flow-in.input b/tests/ns-plain-multi.n=4.c=flow-in.input
deleted file mode 100644
--- a/tests/ns-plain-multi.n=4.c=flow-in.input
+++ /dev/null
@@ -1,4 +0,0 @@
-a	
-
-          b  
-      c
diff --git a/tests/ns-plain-multi.n=4.c=flow-in.invalid.input b/tests/ns-plain-multi.n=4.c=flow-in.invalid.input
deleted file mode 100644
--- a/tests/ns-plain-multi.n=4.c=flow-in.invalid.input
+++ /dev/null
@@ -1,2 +0,0 @@
-a
-    12,345
diff --git a/tests/ns-plain-multi.n=4.c=flow-in.invalid.output b/tests/ns-plain-multi.n=4.c=flow-in.invalid.output
deleted file mode 100644
--- a/tests/ns-plain-multi.n=4.c=flow-in.invalid.output
+++ /dev/null
@@ -1,6 +0,0 @@
-!Commit to 'node' was made outside it
-?a
-l\x0a
-i    
-?12
-!$InputFile$: line 2: column 6: Expected end of input
diff --git a/tests/ns-plain-multi.n=4.c=flow-in.output b/tests/ns-plain-multi.n=4.c=flow-in.output
deleted file mode 100644
--- a/tests/ns-plain-multi.n=4.c=flow-in.output
+++ /dev/null
@@ -1,13 +0,0 @@
-!Commit to 'node' was made outside it
-?a
-w\x09
-b\x0a
-L\x0a
-i    
-w      
-?b
-w  
-l\x0a
-i    
-w  
-?c
diff --git a/tests/ns-plain-one-line.c=flow-key.invalid.input b/tests/ns-plain-one-line.c=flow-key.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain-one-line.c=flow-key.invalid.input
@@ -0,0 +1,1 @@
+12,345
diff --git a/tests/ns-plain-one-line.c=flow-key.invalid.output b/tests/ns-plain-one-line.c=flow-key.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain-one-line.c=flow-key.invalid.output
@@ -0,0 +1,3 @@
+!Commit to 'node' was made outside it
+?12
+!$InputFile$: line 1: column 2: Expected end of input
diff --git a/tests/ns-plain-one-line.c=flow-out.input b/tests/ns-plain-one-line.c=flow-out.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain-one-line.c=flow-out.input
@@ -0,0 +1,1 @@
+a 	" :# {} b
diff --git a/tests/ns-plain-one-line.c=flow-out.output b/tests/ns-plain-one-line.c=flow-out.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain-one-line.c=flow-out.output
@@ -0,0 +1,2 @@
+!Commit to 'node' was made outside it
+?a \x09" :# {} b
diff --git a/tests/ns-plain-single.c=flow-key.invalid.input b/tests/ns-plain-single.c=flow-key.invalid.input
deleted file mode 100644
--- a/tests/ns-plain-single.c=flow-key.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-12,345
diff --git a/tests/ns-plain-single.c=flow-key.invalid.output b/tests/ns-plain-single.c=flow-key.invalid.output
deleted file mode 100644
--- a/tests/ns-plain-single.c=flow-key.invalid.output
+++ /dev/null
@@ -1,3 +0,0 @@
-!Commit to 'node' was made outside it
-?12
-!$InputFile$: line 1: column 2: Expected end of input
diff --git a/tests/ns-plain-single.c=flow-out.input b/tests/ns-plain-single.c=flow-out.input
deleted file mode 100644
--- a/tests/ns-plain-single.c=flow-out.input
+++ /dev/null
@@ -1,1 +0,0 @@
-a 	" :# {} b
diff --git a/tests/ns-plain-single.c=flow-out.output b/tests/ns-plain-single.c=flow-out.output
deleted file mode 100644
--- a/tests/ns-plain-single.c=flow-out.output
+++ /dev/null
@@ -1,2 +0,0 @@
-!Commit to 'node' was made outside it
-?a \x09" :# {} b
diff --git a/tests/ns-plain.n=1.c=flow-key.da.input b/tests/ns-plain.n=1.c=flow-key.da.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.da.input
@@ -0,0 +1,1 @@
+-a
diff --git a/tests/ns-plain.n=1.c=flow-key.da.output b/tests/ns-plain.n=1.c=flow-key.da.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.da.output
@@ -0,0 +1,4 @@
+S
+!Commit to 'node' was made outside it
+T-a
+s
diff --git a/tests/ns-plain.n=1.c=flow-key.dc.input b/tests/ns-plain.n=1.c=flow-key.dc.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.dc.input
@@ -0,0 +1,1 @@
+-#
diff --git a/tests/ns-plain.n=1.c=flow-key.dc.output b/tests/ns-plain.n=1.c=flow-key.dc.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.dc.output
@@ -0,0 +1,4 @@
+S
+!Commit to 'node' was made outside it
+T-#
+s
diff --git a/tests/ns-plain.n=1.c=flow-key.ds.input b/tests/ns-plain.n=1.c=flow-key.ds.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.ds.input
@@ -0,0 +1,1 @@
+- 
diff --git a/tests/ns-plain.n=1.c=flow-key.ds.output b/tests/ns-plain.n=1.c=flow-key.ds.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.ds.output
@@ -0,0 +1,2 @@
+S
+!$InputFile$: line 1: column 1: Unexpected ' '
diff --git a/tests/ns-plain.n=1.c=flow-key.ka.input b/tests/ns-plain.n=1.c=flow-key.ka.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.ka.input
@@ -0,0 +1,1 @@
+?a
diff --git a/tests/ns-plain.n=1.c=flow-key.ka.output b/tests/ns-plain.n=1.c=flow-key.ka.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.ka.output
@@ -0,0 +1,4 @@
+S
+!Commit to 'node' was made outside it
+T?a
+s
diff --git a/tests/ns-plain.n=1.c=flow-key.kc.input b/tests/ns-plain.n=1.c=flow-key.kc.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.kc.input
@@ -0,0 +1,1 @@
+?#
diff --git a/tests/ns-plain.n=1.c=flow-key.kc.output b/tests/ns-plain.n=1.c=flow-key.kc.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.kc.output
@@ -0,0 +1,4 @@
+S
+!Commit to 'node' was made outside it
+T?#
+s
diff --git a/tests/ns-plain.n=1.c=flow-key.ks.input b/tests/ns-plain.n=1.c=flow-key.ks.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.ks.input
@@ -0,0 +1,1 @@
+? 
diff --git a/tests/ns-plain.n=1.c=flow-key.ks.output b/tests/ns-plain.n=1.c=flow-key.ks.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.ks.output
@@ -0,0 +1,2 @@
+S
+!$InputFile$: line 1: column 1: Unexpected ' '
diff --git a/tests/ns-plain.n=1.c=flow-key.va.input b/tests/ns-plain.n=1.c=flow-key.va.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.va.input
@@ -0,0 +1,1 @@
+:a
diff --git a/tests/ns-plain.n=1.c=flow-key.va.output b/tests/ns-plain.n=1.c=flow-key.va.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.va.output
@@ -0,0 +1,4 @@
+S
+!Commit to 'node' was made outside it
+T:a
+s
diff --git a/tests/ns-plain.n=1.c=flow-key.vc.input b/tests/ns-plain.n=1.c=flow-key.vc.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.vc.input
@@ -0,0 +1,1 @@
+:#
diff --git a/tests/ns-plain.n=1.c=flow-key.vc.output b/tests/ns-plain.n=1.c=flow-key.vc.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.vc.output
@@ -0,0 +1,4 @@
+S
+!Commit to 'node' was made outside it
+T:#
+s
diff --git a/tests/ns-plain.n=1.c=flow-key.vs.input b/tests/ns-plain.n=1.c=flow-key.vs.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.vs.input
@@ -0,0 +1,1 @@
+: 
diff --git a/tests/ns-plain.n=1.c=flow-key.vs.output b/tests/ns-plain.n=1.c=flow-key.vs.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-plain.n=1.c=flow-key.vs.output
@@ -0,0 +1,2 @@
+S
+!$InputFile$: line 1: column 1: Unexpected ' '
diff --git a/tests/ns-s-block-map-implicit-key.invalid.output b/tests/ns-s-block-map-implicit-key.invalid.output
--- a/tests/ns-s-block-map-implicit-key.invalid.output
+++ b/tests/ns-s-block-map-implicit-key.invalid.output
@@ -1,3 +1,4 @@
 N
-S
+P
+A
 !$InputFile$: line 1: column 0: Unexpected '?'
diff --git a/tests/ns-s-flow-map-entries.n=4.c=flow-in.lines.input b/tests/ns-s-flow-map-entries.n=4.c=flow-in.lines.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-s-flow-map-entries.n=4.c=flow-in.lines.input
@@ -0,0 +1,1 @@
+a: b, ? c, d, 
diff --git a/tests/ns-s-flow-map-entries.n=4.c=flow-in.lines.output b/tests/ns-s-flow-map-entries.n=4.c=flow-in.lines.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-s-flow-map-entries.n=4.c=flow-in.lines.output
@@ -0,0 +1,45 @@
+X
+N
+S
+Ta
+s
+n
+I:
+w 
+N
+S
+!Commit to 'node' was made outside it
+Tb
+s
+n
+x
+I,
+w 
+X
+I?
+w 
+N
+S
+Tc
+s
+n
+N
+S
+s
+n
+x
+I,
+w 
+X
+N
+S
+Td
+s
+n
+N
+S
+s
+n
+x
+I,
+w 
diff --git a/tests/ns-s-flow-seq-entries.n=4.c=flow-in.lines.input b/tests/ns-s-flow-seq-entries.n=4.c=flow-in.lines.input
new file mode 100644
--- /dev/null
+++ b/tests/ns-s-flow-seq-entries.n=4.c=flow-in.lines.input
@@ -0,0 +1,1 @@
+a , c: d 
diff --git a/tests/ns-s-flow-seq-entries.n=4.c=flow-in.lines.output b/tests/ns-s-flow-seq-entries.n=4.c=flow-in.lines.output
new file mode 100644
--- /dev/null
+++ b/tests/ns-s-flow-seq-entries.n=4.c=flow-in.lines.output
@@ -0,0 +1,26 @@
+N
+S
+Ta
+s
+n
+w 
+I,
+w 
+M
+X
+N
+S
+Tc
+s
+n
+I:
+w 
+N
+S
+!Commit to 'node' was made outside it
+Td
+s
+n
+x
+m
+w 
diff --git a/tests/s-b-double-escaped.input b/tests/s-b-double-escaped.input
deleted file mode 100644
--- a/tests/s-b-double-escaped.input
+++ /dev/null
@@ -1,1 +0,0 @@
- \
diff --git a/tests/s-b-double-escaped.invalid.input b/tests/s-b-double-escaped.invalid.input
deleted file mode 100644
--- a/tests/s-b-double-escaped.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-a
diff --git a/tests/s-b-double-escaped.invalid.output b/tests/s-b-double-escaped.invalid.output
deleted file mode 100644
--- a/tests/s-b-double-escaped.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-E
-!$InputFile$: line 1: column 0: Unexpected 'a'
diff --git a/tests/s-b-double-escaped.output b/tests/s-b-double-escaped.output
deleted file mode 100644
--- a/tests/s-b-double-escaped.output
+++ /dev/null
@@ -1,6 +0,0 @@
-? 
-E
-I\x5c
-!Commit to 'escape' was made outside it
-b\x0a
-e
diff --git a/tests/s-block-line-prefix.n=4.input b/tests/s-block-line-prefix.n=4.input
new file mode 100644
--- /dev/null
+++ b/tests/s-block-line-prefix.n=4.input
@@ -0,0 +1,1 @@
+    
diff --git a/tests/s-block-line-prefix.n=4.invalid.input b/tests/s-block-line-prefix.n=4.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-block-line-prefix.n=4.invalid.input
@@ -0,0 +1,1 @@
+   
diff --git a/tests/s-block-line-prefix.n=4.invalid.output b/tests/s-block-line-prefix.n=4.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-block-line-prefix.n=4.invalid.output
@@ -0,0 +1,1 @@
+!$InputFile$: line 1: column 3: Unexpected end of input
diff --git a/tests/s-block-line-prefix.n=4.output b/tests/s-block-line-prefix.n=4.output
new file mode 100644
--- /dev/null
+++ b/tests/s-block-line-prefix.n=4.output
@@ -0,0 +1,1 @@
+i    
diff --git a/tests/s-double-multi.n=4.input b/tests/s-double-multi.n=4.input
deleted file mode 100644
--- a/tests/s-double-multi.n=4.input
+++ /dev/null
@@ -1,2 +0,0 @@
- a 
-    	a b	c 
diff --git a/tests/s-double-multi.n=4.invalid.input b/tests/s-double-multi.n=4.invalid.input
deleted file mode 100644
--- a/tests/s-double-multi.n=4.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-a
diff --git a/tests/s-double-multi.n=4.invalid.output b/tests/s-double-multi.n=4.invalid.output
deleted file mode 100644
--- a/tests/s-double-multi.n=4.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-?a
-!$InputFile$: line 1: column 1: Expected end of input
diff --git a/tests/s-double-multi.n=4.output b/tests/s-double-multi.n=4.output
deleted file mode 100644
--- a/tests/s-double-multi.n=4.output
+++ /dev/null
@@ -1,6 +0,0 @@
-? a
-w 
-l\x0a
-i    
-w\x09
-?a b\x09c 
diff --git a/tests/s-flow-line-prefix.n=4.indent.input b/tests/s-flow-line-prefix.n=4.indent.input
new file mode 100644
--- /dev/null
+++ b/tests/s-flow-line-prefix.n=4.indent.input
@@ -0,0 +1,1 @@
+    
diff --git a/tests/s-flow-line-prefix.n=4.indent.output b/tests/s-flow-line-prefix.n=4.indent.output
new file mode 100644
--- /dev/null
+++ b/tests/s-flow-line-prefix.n=4.indent.output
@@ -0,0 +1,1 @@
+i    
diff --git a/tests/s-flow-line-prefix.n=4.invalid.input b/tests/s-flow-line-prefix.n=4.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-flow-line-prefix.n=4.invalid.input
@@ -0,0 +1,1 @@
+   
diff --git a/tests/s-flow-line-prefix.n=4.invalid.output b/tests/s-flow-line-prefix.n=4.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-flow-line-prefix.n=4.invalid.output
@@ -0,0 +1,1 @@
+!$InputFile$: line 1: column 3: Unexpected end of input
diff --git a/tests/s-flow-line-prefix.n=4.tab.input b/tests/s-flow-line-prefix.n=4.tab.input
new file mode 100644
--- /dev/null
+++ b/tests/s-flow-line-prefix.n=4.tab.input
@@ -0,0 +1,1 @@
+    	
diff --git a/tests/s-flow-line-prefix.n=4.tab.output b/tests/s-flow-line-prefix.n=4.tab.output
new file mode 100644
--- /dev/null
+++ b/tests/s-flow-line-prefix.n=4.tab.output
@@ -0,0 +1,2 @@
+i    
+w\x09
diff --git a/tests/s-ignored-prefix-block.n=4.input b/tests/s-ignored-prefix-block.n=4.input
deleted file mode 100644
--- a/tests/s-ignored-prefix-block.n=4.input
+++ /dev/null
@@ -1,1 +0,0 @@
-    
diff --git a/tests/s-ignored-prefix-block.n=4.invalid.input b/tests/s-ignored-prefix-block.n=4.invalid.input
deleted file mode 100644
--- a/tests/s-ignored-prefix-block.n=4.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-   
diff --git a/tests/s-ignored-prefix-block.n=4.invalid.output b/tests/s-ignored-prefix-block.n=4.invalid.output
deleted file mode 100644
--- a/tests/s-ignored-prefix-block.n=4.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 3: Unexpected end of input
diff --git a/tests/s-ignored-prefix-block.n=4.output b/tests/s-ignored-prefix-block.n=4.output
deleted file mode 100644
--- a/tests/s-ignored-prefix-block.n=4.output
+++ /dev/null
@@ -1,1 +0,0 @@
-i    
diff --git a/tests/s-ignored-prefix-flow.n=4.indent.input b/tests/s-ignored-prefix-flow.n=4.indent.input
deleted file mode 100644
--- a/tests/s-ignored-prefix-flow.n=4.indent.input
+++ /dev/null
@@ -1,1 +0,0 @@
-    
diff --git a/tests/s-ignored-prefix-flow.n=4.indent.output b/tests/s-ignored-prefix-flow.n=4.indent.output
deleted file mode 100644
--- a/tests/s-ignored-prefix-flow.n=4.indent.output
+++ /dev/null
@@ -1,1 +0,0 @@
-i    
diff --git a/tests/s-ignored-prefix-flow.n=4.invalid.input b/tests/s-ignored-prefix-flow.n=4.invalid.input
deleted file mode 100644
--- a/tests/s-ignored-prefix-flow.n=4.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-   
diff --git a/tests/s-ignored-prefix-flow.n=4.invalid.output b/tests/s-ignored-prefix-flow.n=4.invalid.output
deleted file mode 100644
--- a/tests/s-ignored-prefix-flow.n=4.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 3: Unexpected end of input
diff --git a/tests/s-ignored-prefix-flow.n=4.tab.input b/tests/s-ignored-prefix-flow.n=4.tab.input
deleted file mode 100644
--- a/tests/s-ignored-prefix-flow.n=4.tab.input
+++ /dev/null
@@ -1,1 +0,0 @@
-    	
diff --git a/tests/s-ignored-prefix-flow.n=4.tab.output b/tests/s-ignored-prefix-flow.n=4.tab.output
deleted file mode 100644
--- a/tests/s-ignored-prefix-flow.n=4.tab.output
+++ /dev/null
@@ -1,2 +0,0 @@
-i    
-w\x09
diff --git a/tests/s-ignored-prefix.n=4.s=double.input b/tests/s-ignored-prefix.n=4.s=double.input
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=double.input
+++ /dev/null
@@ -1,1 +0,0 @@
-    	
diff --git a/tests/s-ignored-prefix.n=4.s=double.output b/tests/s-ignored-prefix.n=4.s=double.output
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=double.output
+++ /dev/null
@@ -1,2 +0,0 @@
-i    
-w\x09
diff --git a/tests/s-ignored-prefix.n=4.s=folded.invalid.input b/tests/s-ignored-prefix.n=4.s=folded.invalid.input
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=folded.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-     
diff --git a/tests/s-ignored-prefix.n=4.s=folded.invalid.output b/tests/s-ignored-prefix.n=4.s=folded.invalid.output
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=folded.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-i    
-!$InputFile$: line 1: column 4: Expected end of input
diff --git a/tests/s-ignored-prefix.n=4.s=literal.input b/tests/s-ignored-prefix.n=4.s=literal.input
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=literal.input
+++ /dev/null
@@ -1,1 +0,0 @@
-    
diff --git a/tests/s-ignored-prefix.n=4.s=literal.output b/tests/s-ignored-prefix.n=4.s=literal.output
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=literal.output
+++ /dev/null
@@ -1,1 +0,0 @@
-i    
diff --git a/tests/s-ignored-prefix.n=4.s=plain.input b/tests/s-ignored-prefix.n=4.s=plain.input
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=plain.input
+++ /dev/null
@@ -1,1 +0,0 @@
-    
diff --git a/tests/s-ignored-prefix.n=4.s=plain.output b/tests/s-ignored-prefix.n=4.s=plain.output
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=plain.output
+++ /dev/null
@@ -1,1 +0,0 @@
-i    
diff --git a/tests/s-ignored-prefix.n=4.s=single.input b/tests/s-ignored-prefix.n=4.s=single.input
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=single.input
+++ /dev/null
@@ -1,1 +0,0 @@
-     
diff --git a/tests/s-ignored-prefix.n=4.s=single.output b/tests/s-ignored-prefix.n=4.s=single.output
deleted file mode 100644
--- a/tests/s-ignored-prefix.n=4.s=single.output
+++ /dev/null
@@ -1,2 +0,0 @@
-i    
-w 
diff --git a/tests/s-l+block-collection.n=2.c=block-in.invalid.input b/tests/s-l+block-collection.n=2.c=block-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-collection.n=2.c=block-in.invalid.input
@@ -0,0 +1,2 @@
+
+  - a
diff --git a/tests/s-l+block-collection.n=2.c=block-in.invalid.output b/tests/s-l+block-collection.n=2.c=block-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-collection.n=2.c=block-in.invalid.output
@@ -0,0 +1,3 @@
+b\x0a
+M
+!$InputFile$: line 2: column 2: Unexpected '-'
diff --git a/tests/s-l+block-collection.n=2.c=block-in.mapping.input b/tests/s-l+block-collection.n=2.c=block-in.mapping.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-collection.n=2.c=block-in.mapping.input
@@ -0,0 +1,2 @@
+
+   a: b
diff --git a/tests/s-l+block-collection.n=2.c=block-in.mapping.output b/tests/s-l+block-collection.n=2.c=block-in.mapping.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-collection.n=2.c=block-in.mapping.output
@@ -0,0 +1,21 @@
+b\x0a
+M
+i   
+X
+N
+S
+Ta
+s
+n
+I:
+!Commit to 'node' was made outside it
+w 
+N
+S
+!Commit to 'node' was made outside it
+Tb
+s
+n
+b\x0a
+x
+m
diff --git a/tests/s-l+block-collection.n=2.c=block-in.sequence.input b/tests/s-l+block-collection.n=2.c=block-in.sequence.input
deleted file mode 100644
--- a/tests/s-l+block-collection.n=2.c=block-in.sequence.input
+++ /dev/null
@@ -1,2 +0,0 @@
-
-  - a
diff --git a/tests/s-l+block-collection.n=2.c=block-in.sequence.output b/tests/s-l+block-collection.n=2.c=block-in.sequence.output
deleted file mode 100644
--- a/tests/s-l+block-collection.n=2.c=block-in.sequence.output
+++ /dev/null
@@ -1,14 +0,0 @@
-b\x0a
-Q
-i  
-I-
-!Commit to 'node' was made outside it
-w 
-N
-S
-!Commit to 'node' was made outside it
-Ta
-s
-n
-b\x0a
-q
diff --git a/tests/s-l+block-collection.n=2.c=block-out.invalid.input b/tests/s-l+block-collection.n=2.c=block-out.invalid.input
deleted file mode 100644
--- a/tests/s-l+block-collection.n=2.c=block-out.invalid.input
+++ /dev/null
@@ -1,2 +0,0 @@
-
-  - a
diff --git a/tests/s-l+block-collection.n=2.c=block-out.invalid.output b/tests/s-l+block-collection.n=2.c=block-out.invalid.output
deleted file mode 100644
--- a/tests/s-l+block-collection.n=2.c=block-out.invalid.output
+++ /dev/null
@@ -1,3 +0,0 @@
-b\x0a
-M
-!$InputFile$: line 2: column 2: Unexpected '-'
diff --git a/tests/s-l+block-collection.n=2.c=block-out.sequence.input b/tests/s-l+block-collection.n=2.c=block-out.sequence.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-collection.n=2.c=block-out.sequence.input
@@ -0,0 +1,2 @@
+
+  - a
diff --git a/tests/s-l+block-collection.n=2.c=block-out.sequence.output b/tests/s-l+block-collection.n=2.c=block-out.sequence.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-collection.n=2.c=block-out.sequence.output
@@ -0,0 +1,14 @@
+b\x0a
+Q
+i  
+I-
+!Commit to 'node' was made outside it
+w 
+N
+S
+!Commit to 'node' was made outside it
+Ta
+s
+n
+b\x0a
+q
diff --git a/tests/s-l+block-in-block.n=2.c=block-in.invalid.input b/tests/s-l+block-in-block.n=2.c=block-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-in-block.n=2.c=block-in.invalid.input
@@ -0,0 +1,1 @@
+*a
diff --git a/tests/s-l+block-in-block.n=2.c=block-in.invalid.output b/tests/s-l+block-in-block.n=2.c=block-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-in-block.n=2.c=block-in.invalid.output
@@ -0,0 +1,3 @@
+N
+M
+!$InputFile$: line 1: column 0: Unexpected '*'
diff --git a/tests/s-l+block-in-block.n=2.c=block-in.tagged.input b/tests/s-l+block-in-block.n=2.c=block-in.tagged.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-in-block.n=2.c=block-in.tagged.input
@@ -0,0 +1,2 @@
+ !t |
+   a
diff --git a/tests/s-l+block-in-block.n=2.c=block-in.tagged.output b/tests/s-l+block-in-block.n=2.c=block-in.tagged.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-in-block.n=2.c=block-in.tagged.output
@@ -0,0 +1,19 @@
+N
+w 
+P
+G
+H
+I!
+h
+tt
+g
+p
+w 
+S
+I|
+b\x0a
+i   
+Ta
+L\x0a
+s
+n
diff --git a/tests/s-l+block-in-block.n=2.c=block-in.untagged.input b/tests/s-l+block-in-block.n=2.c=block-in.untagged.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-in-block.n=2.c=block-in.untagged.input
@@ -0,0 +1,2 @@
+|
+   a
diff --git a/tests/s-l+block-in-block.n=2.c=block-in.untagged.output b/tests/s-l+block-in-block.n=2.c=block-in.untagged.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-in-block.n=2.c=block-in.untagged.output
@@ -0,0 +1,9 @@
+N
+S
+I|
+b\x0a
+i   
+Ta
+L\x0a
+s
+n
diff --git a/tests/s-l+block-in-block.n=2.c=block-out.tagged.input b/tests/s-l+block-in-block.n=2.c=block-out.tagged.input
deleted file mode 100644
--- a/tests/s-l+block-in-block.n=2.c=block-out.tagged.input
+++ /dev/null
@@ -1,2 +0,0 @@
- !t |
-   a
diff --git a/tests/s-l+block-in-block.n=2.c=block-out.tagged.output b/tests/s-l+block-in-block.n=2.c=block-out.tagged.output
deleted file mode 100644
--- a/tests/s-l+block-in-block.n=2.c=block-out.tagged.output
+++ /dev/null
@@ -1,20 +0,0 @@
-N
-w 
-P
-G
-H
-I!
-h
-tt
-g
-p
-w 
-S
-I|
-!Commit to 'node' was made outside it
-b\x0a
-i   
-Ta
-L\x0a
-s
-n
diff --git a/tests/s-l+block-in-block.n=2.c=block-out.untagged.input b/tests/s-l+block-in-block.n=2.c=block-out.untagged.input
deleted file mode 100644
--- a/tests/s-l+block-in-block.n=2.c=block-out.untagged.input
+++ /dev/null
@@ -1,2 +0,0 @@
-|
-   a
diff --git a/tests/s-l+block-in-block.n=2.c=block-out.untagged.output b/tests/s-l+block-in-block.n=2.c=block-out.untagged.output
deleted file mode 100644
--- a/tests/s-l+block-in-block.n=2.c=block-out.untagged.output
+++ /dev/null
@@ -1,10 +0,0 @@
-N
-S
-I|
-!Commit to 'node' was made outside it
-b\x0a
-i   
-Ta
-L\x0a
-s
-n
diff --git a/tests/s-l+block-indented.n=2.c=block-in.in-line-map.input b/tests/s-l+block-indented.n=2.c=block-in.in-line-map.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-indented.n=2.c=block-in.in-line-map.input
@@ -0,0 +1,2 @@
+ a: b
+    c: d
diff --git a/tests/s-l+block-indented.n=2.c=block-in.in-line-map.output b/tests/s-l+block-indented.n=2.c=block-in.in-line-map.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-indented.n=2.c=block-in.in-line-map.output
@@ -0,0 +1,36 @@
+i 
+N
+M
+X
+N
+S
+Ta
+s
+n
+I:
+w 
+N
+S
+Tb
+s
+n
+b\x0a
+x
+i    
+X
+N
+S
+Tc
+s
+n
+I:
+w 
+N
+S
+Td
+s
+n
+b\x0a
+x
+m
+n
diff --git a/tests/s-l+block-indented.n=2.c=block-in.in-line-seq.input b/tests/s-l+block-indented.n=2.c=block-in.in-line-seq.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-indented.n=2.c=block-in.in-line-seq.input
@@ -0,0 +1,2 @@
+ - a
+    - b
diff --git a/tests/s-l+block-indented.n=2.c=block-in.in-line-seq.output b/tests/s-l+block-indented.n=2.c=block-in.in-line-seq.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-indented.n=2.c=block-in.in-line-seq.output
@@ -0,0 +1,22 @@
+i 
+N
+Q
+I-
+w 
+N
+S
+Ta
+s
+n
+b\x0a
+i    
+I-
+w 
+N
+S
+Tb
+s
+n
+b\x0a
+q
+n
diff --git a/tests/s-l+block-indented.n=2.c=block-in.literal.input b/tests/s-l+block-indented.n=2.c=block-in.literal.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-indented.n=2.c=block-in.literal.input
@@ -0,0 +1,2 @@
+ |
+   a
diff --git a/tests/s-l+block-indented.n=2.c=block-in.literal.output b/tests/s-l+block-indented.n=2.c=block-in.literal.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-indented.n=2.c=block-in.literal.output
@@ -0,0 +1,10 @@
+N
+w 
+S
+I|
+b\x0a
+i   
+Ta
+L\x0a
+s
+n
diff --git a/tests/s-l+block-indented.n=2.c=block-in.sequence.input b/tests/s-l+block-indented.n=2.c=block-in.sequence.input
--- a/tests/s-l+block-indented.n=2.c=block-in.sequence.input
+++ b/tests/s-l+block-indented.n=2.c=block-in.sequence.input
@@ -1,2 +1,2 @@
 
-  - a
+   - a
diff --git a/tests/s-l+block-indented.n=2.c=block-in.sequence.output b/tests/s-l+block-indented.n=2.c=block-in.sequence.output
--- a/tests/s-l+block-indented.n=2.c=block-in.sequence.output
+++ b/tests/s-l+block-indented.n=2.c=block-in.sequence.output
@@ -1,7 +1,7 @@
 N
 b\x0a
 Q
-i  
+i   
 I-
 !Commit to 'node' was made outside it
 w 
diff --git a/tests/s-l+block-indented.n=2.c=block-out.invalid.input b/tests/s-l+block-indented.n=2.c=block-out.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-indented.n=2.c=block-out.invalid.input
@@ -0,0 +1,1 @@
+- a
diff --git a/tests/s-l+block-indented.n=2.c=block-out.invalid.output b/tests/s-l+block-indented.n=2.c=block-out.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-indented.n=2.c=block-out.invalid.output
@@ -0,0 +1,5 @@
+N
+S
+s
+n
+!$InputFile$: line 1: column 0: Expected end of input
diff --git a/tests/s-l+block-indented.n=2.c=block-out.literal.input b/tests/s-l+block-indented.n=2.c=block-out.literal.input
deleted file mode 100644
--- a/tests/s-l+block-indented.n=2.c=block-out.literal.input
+++ /dev/null
@@ -1,2 +0,0 @@
- |
-   a
diff --git a/tests/s-l+block-indented.n=2.c=block-out.literal.output b/tests/s-l+block-indented.n=2.c=block-out.literal.output
deleted file mode 100644
--- a/tests/s-l+block-indented.n=2.c=block-out.literal.output
+++ /dev/null
@@ -1,11 +0,0 @@
-N
-w 
-S
-I|
-!Commit to 'node' was made outside it
-b\x0a
-i   
-Ta
-L\x0a
-s
-n
diff --git a/tests/s-l+block-indented.n=2.c=block-out.sequence.input b/tests/s-l+block-indented.n=2.c=block-out.sequence.input
--- a/tests/s-l+block-indented.n=2.c=block-out.sequence.input
+++ b/tests/s-l+block-indented.n=2.c=block-out.sequence.input
@@ -1,2 +1,2 @@
 
-   - a
+  - a
diff --git a/tests/s-l+block-indented.n=2.c=block-out.sequence.output b/tests/s-l+block-indented.n=2.c=block-out.sequence.output
--- a/tests/s-l+block-indented.n=2.c=block-out.sequence.output
+++ b/tests/s-l+block-indented.n=2.c=block-out.sequence.output
@@ -1,7 +1,7 @@
 N
 b\x0a
 Q
-i   
+i  
 I-
 !Commit to 'node' was made outside it
 w 
diff --git a/tests/s-l+block-node.n=-1.c=block-in.1.input b/tests/s-l+block-node.n=-1.c=block-in.1.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-in.1.input
@@ -0,0 +1,1 @@
+!a b: c
diff --git a/tests/s-l+block-node.n=-1.c=block-in.1.output b/tests/s-l+block-node.n=-1.c=block-in.1.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-in.1.output
@@ -0,0 +1,30 @@
+N
+M
+X
+N
+P
+G
+H
+I!
+h
+ta
+g
+p
+w 
+S
+Tb
+s
+n
+I:
+!Commit to 'node' was made outside it
+w 
+N
+S
+!Commit to 'node' was made outside it
+Tc
+s
+n
+b\x0a
+x
+m
+n
diff --git a/tests/s-l+block-node.n=-1.c=block-in.2.input b/tests/s-l+block-node.n=-1.c=block-in.2.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-in.2.input
@@ -0,0 +1,2 @@
+!a
+b: c
diff --git a/tests/s-l+block-node.n=-1.c=block-in.2.output b/tests/s-l+block-node.n=-1.c=block-in.2.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-in.2.output
@@ -0,0 +1,30 @@
+N
+P
+G
+H
+I!
+h
+ta
+g
+p
+b\x0a
+M
+X
+N
+S
+Tb
+s
+n
+I:
+!Commit to 'node' was made outside it
+w 
+N
+S
+!Commit to 'node' was made outside it
+Tc
+s
+n
+b\x0a
+x
+m
+n
diff --git a/tests/s-l+block-node.n=-1.c=block-in.3.input b/tests/s-l+block-node.n=-1.c=block-in.3.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-in.3.input
@@ -0,0 +1,2 @@
+!a
+!b c: d
diff --git a/tests/s-l+block-node.n=-1.c=block-in.3.output b/tests/s-l+block-node.n=-1.c=block-in.3.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-in.3.output
@@ -0,0 +1,39 @@
+N
+P
+G
+H
+I!
+h
+ta
+g
+p
+b\x0a
+M
+X
+N
+P
+G
+H
+I!
+h
+tb
+g
+p
+w 
+S
+Tc
+s
+n
+I:
+!Commit to 'node' was made outside it
+w 
+N
+S
+!Commit to 'node' was made outside it
+Td
+s
+n
+b\x0a
+x
+m
+n
diff --git a/tests/s-l+block-node.n=-1.c=block-in.invalid.input b/tests/s-l+block-node.n=-1.c=block-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-in.invalid.input
@@ -0,0 +1,2 @@
+a: b:
+  c:
diff --git a/tests/s-l+block-node.n=-1.c=block-in.invalid.output b/tests/s-l+block-node.n=-1.c=block-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-in.invalid.output
@@ -0,0 +1,18 @@
+N
+M
+X
+N
+S
+Ta
+s
+n
+I:
+!Commit to 'node' was made outside it
+w 
+N
+S
+!Commit to 'node' was made outside it
+Tb
+s
+n
+!$InputFile$: line 1: column 4: Expected start of line
diff --git a/tests/s-l+block-node.n=-1.c=block-out.input b/tests/s-l+block-node.n=-1.c=block-out.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-out.input
@@ -0,0 +1,1 @@
+a
diff --git a/tests/s-l+block-node.n=-1.c=block-out.output b/tests/s-l+block-node.n=-1.c=block-out.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=-1.c=block-out.output
@@ -0,0 +1,7 @@
+N
+S
+!Commit to 'node' was made outside it
+Ta
+s
+n
+b\x0a
diff --git a/tests/s-l+block-node.n=0.c=block-in.invalid.input b/tests/s-l+block-node.n=0.c=block-in.invalid.input
deleted file mode 100644
--- a/tests/s-l+block-node.n=0.c=block-in.invalid.input
+++ /dev/null
@@ -1,2 +0,0 @@
-
-a
diff --git a/tests/s-l+block-node.n=0.c=block-in.invalid.output b/tests/s-l+block-node.n=0.c=block-in.invalid.output
deleted file mode 100644
--- a/tests/s-l+block-node.n=0.c=block-in.invalid.output
+++ /dev/null
@@ -1,3 +0,0 @@
-N
-S
-!$InputFile$: line 1: column 0: Unexpected '\x0a'
diff --git a/tests/s-l+block-node.n=0.c=block-out.invalid.input b/tests/s-l+block-node.n=0.c=block-out.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=0.c=block-out.invalid.input
@@ -0,0 +1,2 @@
+
+a
diff --git a/tests/s-l+block-node.n=0.c=block-out.invalid.output b/tests/s-l+block-node.n=0.c=block-out.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=0.c=block-out.invalid.output
@@ -0,0 +1,4 @@
+N
+P
+A
+!$InputFile$: line 1: column 0: Unexpected '\x0a'
diff --git a/tests/s-l+block-node.n=2.c=block-in.block.input b/tests/s-l+block-node.n=2.c=block-in.block.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=2.c=block-in.block.input
@@ -0,0 +1,2 @@
+|
+   a
diff --git a/tests/s-l+block-node.n=2.c=block-in.block.output b/tests/s-l+block-node.n=2.c=block-in.block.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=2.c=block-in.block.output
@@ -0,0 +1,9 @@
+N
+S
+I|
+b\x0a
+i   
+Ta
+L\x0a
+s
+n
diff --git a/tests/s-l+block-node.n=2.c=block-in.flow.input b/tests/s-l+block-node.n=2.c=block-in.flow.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=2.c=block-in.flow.input
@@ -0,0 +1,1 @@
+a
diff --git a/tests/s-l+block-node.n=2.c=block-in.flow.output b/tests/s-l+block-node.n=2.c=block-in.flow.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=2.c=block-in.flow.output
@@ -0,0 +1,7 @@
+N
+S
+!Commit to 'node' was made outside it
+Ta
+s
+n
+b\x0a
diff --git a/tests/s-l+block-node.n=2.c=block-in.invalid.input b/tests/s-l+block-node.n=2.c=block-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=2.c=block-in.invalid.input
@@ -0,0 +1,1 @@
+|!
diff --git a/tests/s-l+block-node.n=2.c=block-in.invalid.output b/tests/s-l+block-node.n=2.c=block-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-node.n=2.c=block-in.invalid.output
@@ -0,0 +1,4 @@
+N
+P
+A
+!$InputFile$: line 1: column 0: Unexpected '|'
diff --git a/tests/s-l+block-node.n=2.c=block-out.block.input b/tests/s-l+block-node.n=2.c=block-out.block.input
deleted file mode 100644
--- a/tests/s-l+block-node.n=2.c=block-out.block.input
+++ /dev/null
@@ -1,2 +0,0 @@
-|
-   a
diff --git a/tests/s-l+block-node.n=2.c=block-out.block.output b/tests/s-l+block-node.n=2.c=block-out.block.output
deleted file mode 100644
--- a/tests/s-l+block-node.n=2.c=block-out.block.output
+++ /dev/null
@@ -1,10 +0,0 @@
-N
-S
-I|
-!Commit to 'node' was made outside it
-b\x0a
-i   
-Ta
-L\x0a
-s
-n
diff --git a/tests/s-l+block-node.n=2.c=block-out.invalid.input b/tests/s-l+block-node.n=2.c=block-out.invalid.input
deleted file mode 100644
--- a/tests/s-l+block-node.n=2.c=block-out.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-|!
diff --git a/tests/s-l+block-node.n=2.c=block-out.invalid.output b/tests/s-l+block-node.n=2.c=block-out.invalid.output
deleted file mode 100644
--- a/tests/s-l+block-node.n=2.c=block-out.invalid.output
+++ /dev/null
@@ -1,5 +0,0 @@
-N
-S
-I|
-!Commit to 'node' was made outside it
-!$InputFile$: line 1: column 1: Unexpected '!'
diff --git a/tests/s-l+block-scalar.n=2.c=block-in.folded.input b/tests/s-l+block-scalar.n=2.c=block-in.folded.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-scalar.n=2.c=block-in.folded.input
@@ -0,0 +1,3 @@
+!foo
+   >
+   a
diff --git a/tests/s-l+block-scalar.n=2.c=block-in.folded.invalid.input b/tests/s-l+block-scalar.n=2.c=block-in.folded.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-scalar.n=2.c=block-in.folded.invalid.input
@@ -0,0 +1,3 @@
+!foo
+  >
+   a
diff --git a/tests/s-l+block-scalar.n=2.c=block-in.folded.invalid.output b/tests/s-l+block-scalar.n=2.c=block-in.folded.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-scalar.n=2.c=block-in.folded.invalid.output
@@ -0,0 +1,2 @@
+S
+!$InputFile$: line 1: column 0: Unexpected '!'
diff --git a/tests/s-l+block-scalar.n=2.c=block-in.folded.output b/tests/s-l+block-scalar.n=2.c=block-in.folded.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-scalar.n=2.c=block-in.folded.output
@@ -0,0 +1,17 @@
+P
+G
+H
+I!
+h
+tfoo
+g
+p
+b\x0a
+i   
+S
+I>
+b\x0a
+i   
+Ta
+L\x0a
+s
diff --git a/tests/s-l+block-scalar.n=2.c=block-in.literal.input b/tests/s-l+block-scalar.n=2.c=block-in.literal.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-scalar.n=2.c=block-in.literal.input
@@ -0,0 +1,3 @@
+ !foo
+   |
+   a
diff --git a/tests/s-l+block-scalar.n=2.c=block-in.literal.invalid.input b/tests/s-l+block-scalar.n=2.c=block-in.literal.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-scalar.n=2.c=block-in.literal.invalid.input
@@ -0,0 +1,3 @@
+!foo
+  |
+   a
diff --git a/tests/s-l+block-scalar.n=2.c=block-in.literal.invalid.output b/tests/s-l+block-scalar.n=2.c=block-in.literal.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-scalar.n=2.c=block-in.literal.invalid.output
@@ -0,0 +1,2 @@
+S
+!$InputFile$: line 1: column 0: Unexpected '!'
diff --git a/tests/s-l+block-scalar.n=2.c=block-in.literal.output b/tests/s-l+block-scalar.n=2.c=block-in.literal.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l+block-scalar.n=2.c=block-in.literal.output
@@ -0,0 +1,18 @@
+w 
+P
+G
+H
+I!
+h
+tfoo
+g
+p
+b\x0a
+i   
+S
+I|
+b\x0a
+i   
+Ta
+L\x0a
+s
diff --git a/tests/s-l+block-scalar.n=2.c=block-out.folded.input b/tests/s-l+block-scalar.n=2.c=block-out.folded.input
deleted file mode 100644
--- a/tests/s-l+block-scalar.n=2.c=block-out.folded.input
+++ /dev/null
@@ -1,2 +0,0 @@
->
-   a
diff --git a/tests/s-l+block-scalar.n=2.c=block-out.folded.output b/tests/s-l+block-scalar.n=2.c=block-out.folded.output
deleted file mode 100644
--- a/tests/s-l+block-scalar.n=2.c=block-out.folded.output
+++ /dev/null
@@ -1,8 +0,0 @@
-S
-I>
-!Commit to 'node' was made outside it
-b\x0a
-i   
-Ta
-L\x0a
-s
diff --git a/tests/s-l+block-scalar.n=2.c=block-out.literal.input b/tests/s-l+block-scalar.n=2.c=block-out.literal.input
deleted file mode 100644
--- a/tests/s-l+block-scalar.n=2.c=block-out.literal.input
+++ /dev/null
@@ -1,2 +0,0 @@
- |
-   a
diff --git a/tests/s-l+block-scalar.n=2.c=block-out.literal.output b/tests/s-l+block-scalar.n=2.c=block-out.literal.output
deleted file mode 100644
--- a/tests/s-l+block-scalar.n=2.c=block-out.literal.output
+++ /dev/null
@@ -1,9 +0,0 @@
-w 
-S
-I|
-!Commit to 'node' was made outside it
-b\x0a
-i   
-Ta
-L\x0a
-s
diff --git a/tests/s-l+flow-in-block.n=2.invalid.output b/tests/s-l+flow-in-block.n=2.invalid.output
--- a/tests/s-l+flow-in-block.n=2.invalid.output
+++ b/tests/s-l+flow-in-block.n=2.invalid.output
@@ -1,3 +1,4 @@
 N
-S
+P
+A
 !$InputFile$: line 1: column 0: Unexpected '|'
diff --git a/tests/s-l-comments.lines.input b/tests/s-l-comments.lines.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l-comments.lines.input
@@ -0,0 +1,3 @@
+
+#
+
diff --git a/tests/s-l-comments.lines.output b/tests/s-l-comments.lines.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l-comments.lines.output
@@ -0,0 +1,6 @@
+b\x0a
+C
+I#
+c
+b\x0a
+b\x0a
diff --git a/tests/s-l-double-escaped.n=2.input b/tests/s-l-double-escaped.n=2.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l-double-escaped.n=2.input
@@ -0,0 +1,2 @@
+ \
+
diff --git a/tests/s-l-double-escaped.n=2.invalid.input b/tests/s-l-double-escaped.n=2.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-l-double-escaped.n=2.invalid.input
@@ -0,0 +1,1 @@
+a
diff --git a/tests/s-l-double-escaped.n=2.invalid.output b/tests/s-l-double-escaped.n=2.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l-double-escaped.n=2.invalid.output
@@ -0,0 +1,2 @@
+E
+!$InputFile$: line 1: column 0: Unexpected 'a'
diff --git a/tests/s-l-double-escaped.n=2.output b/tests/s-l-double-escaped.n=2.output
new file mode 100644
--- /dev/null
+++ b/tests/s-l-double-escaped.n=2.output
@@ -0,0 +1,7 @@
+? 
+E
+I\x5c
+!Commit to 'escape' was made outside it
+b\x0a
+e
+L\x0a
diff --git a/tests/s-line-prefix.n=4.c=block-in.input b/tests/s-line-prefix.n=4.c=block-in.input
new file mode 100644
--- /dev/null
+++ b/tests/s-line-prefix.n=4.c=block-in.input
@@ -0,0 +1,1 @@
+    
diff --git a/tests/s-line-prefix.n=4.c=block-in.output b/tests/s-line-prefix.n=4.c=block-in.output
new file mode 100644
--- /dev/null
+++ b/tests/s-line-prefix.n=4.c=block-in.output
@@ -0,0 +1,1 @@
+i    
diff --git a/tests/s-line-prefix.n=4.c=block-out.invalid.input b/tests/s-line-prefix.n=4.c=block-out.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-line-prefix.n=4.c=block-out.invalid.input
@@ -0,0 +1,1 @@
+     
diff --git a/tests/s-line-prefix.n=4.c=block-out.invalid.output b/tests/s-line-prefix.n=4.c=block-out.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-line-prefix.n=4.c=block-out.invalid.output
@@ -0,0 +1,2 @@
+i    
+!$InputFile$: line 1: column 4: Expected end of input
diff --git a/tests/s-line-prefix.n=4.c=flow-in.input b/tests/s-line-prefix.n=4.c=flow-in.input
new file mode 100644
--- /dev/null
+++ b/tests/s-line-prefix.n=4.c=flow-in.input
@@ -0,0 +1,1 @@
+    
diff --git a/tests/s-line-prefix.n=4.c=flow-in.output b/tests/s-line-prefix.n=4.c=flow-in.output
new file mode 100644
--- /dev/null
+++ b/tests/s-line-prefix.n=4.c=flow-in.output
@@ -0,0 +1,1 @@
+i    
diff --git a/tests/s-line-prefix.n=4.c=flow-out.input b/tests/s-line-prefix.n=4.c=flow-out.input
new file mode 100644
--- /dev/null
+++ b/tests/s-line-prefix.n=4.c=flow-out.input
@@ -0,0 +1,1 @@
+     
diff --git a/tests/s-line-prefix.n=4.c=flow-out.output b/tests/s-line-prefix.n=4.c=flow-out.output
new file mode 100644
--- /dev/null
+++ b/tests/s-line-prefix.n=4.c=flow-out.output
@@ -0,0 +1,2 @@
+i    
+w 
diff --git a/tests/s-ns-double-chars.input b/tests/s-ns-double-chars.input
deleted file mode 100644
--- a/tests/s-ns-double-chars.input
+++ /dev/null
@@ -1,1 +0,0 @@
- 	a
diff --git a/tests/s-ns-double-chars.invalid.input b/tests/s-ns-double-chars.invalid.input
deleted file mode 100644
--- a/tests/s-ns-double-chars.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-"
diff --git a/tests/s-ns-double-chars.invalid.output b/tests/s-ns-double-chars.invalid.output
deleted file mode 100644
--- a/tests/s-ns-double-chars.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 0: Unexpected '"'
diff --git a/tests/s-ns-double-chars.output b/tests/s-ns-double-chars.output
deleted file mode 100644
--- a/tests/s-ns-double-chars.output
+++ /dev/null
@@ -1,1 +0,0 @@
-? \x09a
diff --git a/tests/s-ns-double-next-line.n=4.input b/tests/s-ns-double-next-line.n=4.input
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-double-next-line.n=4.input
@@ -0,0 +1,2 @@
+
+    	a b	c
diff --git a/tests/s-ns-double-next-line.n=4.invalid.input b/tests/s-ns-double-next-line.n=4.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-double-next-line.n=4.invalid.input
@@ -0,0 +1,1 @@
+
diff --git a/tests/s-ns-double-next-line.n=4.invalid.output b/tests/s-ns-double-next-line.n=4.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-double-next-line.n=4.invalid.output
@@ -0,0 +1,2 @@
+l\x0a
+!$InputFile$: line 2: column 0: Unexpected end of input
diff --git a/tests/s-ns-double-next-line.n=4.output b/tests/s-ns-double-next-line.n=4.output
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-double-next-line.n=4.output
@@ -0,0 +1,4 @@
+l\x0a
+i    
+w\x09
+?a b\x09c
diff --git a/tests/s-ns-double-next.n=4.input b/tests/s-ns-double-next.n=4.input
deleted file mode 100644
--- a/tests/s-ns-double-next.n=4.input
+++ /dev/null
@@ -1,2 +0,0 @@
-
-    	a b	c
diff --git a/tests/s-ns-double-next.n=4.invalid.input b/tests/s-ns-double-next.n=4.invalid.input
deleted file mode 100644
--- a/tests/s-ns-double-next.n=4.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-
diff --git a/tests/s-ns-double-next.n=4.invalid.output b/tests/s-ns-double-next.n=4.invalid.output
deleted file mode 100644
--- a/tests/s-ns-double-next.n=4.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-l\x0a
-!$InputFile$: line 2: column 0: Unexpected end of input
diff --git a/tests/s-ns-double-next.n=4.output b/tests/s-ns-double-next.n=4.output
deleted file mode 100644
--- a/tests/s-ns-double-next.n=4.output
+++ /dev/null
@@ -1,4 +0,0 @@
-l\x0a
-i    
-w\x09
-?a b\x09c
diff --git a/tests/s-ns-plain-chars.c=flow-in.input b/tests/s-ns-plain-chars.c=flow-in.input
deleted file mode 100644
--- a/tests/s-ns-plain-chars.c=flow-in.input
+++ /dev/null
@@ -1,1 +0,0 @@
- 	a
diff --git a/tests/s-ns-plain-chars.c=flow-in.invalid.input b/tests/s-ns-plain-chars.c=flow-in.invalid.input
deleted file mode 100644
--- a/tests/s-ns-plain-chars.c=flow-in.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
- ,
diff --git a/tests/s-ns-plain-chars.c=flow-in.invalid.output b/tests/s-ns-plain-chars.c=flow-in.invalid.output
deleted file mode 100644
--- a/tests/s-ns-plain-chars.c=flow-in.invalid.output
+++ /dev/null
@@ -1,1 +0,0 @@
-!$InputFile$: line 1: column 1: Unexpected ','
diff --git a/tests/s-ns-plain-chars.c=flow-in.output b/tests/s-ns-plain-chars.c=flow-in.output
deleted file mode 100644
--- a/tests/s-ns-plain-chars.c=flow-in.output
+++ /dev/null
@@ -1,1 +0,0 @@
-? \x09a
diff --git a/tests/s-ns-plain-next-line.n=4.c=flow-in.input b/tests/s-ns-plain-next-line.n=4.c=flow-in.input
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-plain-next-line.n=4.c=flow-in.input
@@ -0,0 +1,2 @@
+
+      a  b
diff --git a/tests/s-ns-plain-next-line.n=4.c=flow-in.invalid.input b/tests/s-ns-plain-next-line.n=4.c=flow-in.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-plain-next-line.n=4.c=flow-in.invalid.input
@@ -0,0 +1,2 @@
+  
+    12,345
diff --git a/tests/s-ns-plain-next-line.n=4.c=flow-in.invalid.output b/tests/s-ns-plain-next-line.n=4.c=flow-in.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-plain-next-line.n=4.c=flow-in.invalid.output
@@ -0,0 +1,5 @@
+w  
+l\x0a
+i    
+?12
+!$InputFile$: line 2: column 6: Expected end of input
diff --git a/tests/s-ns-plain-next-line.n=4.c=flow-in.output b/tests/s-ns-plain-next-line.n=4.c=flow-in.output
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-plain-next-line.n=4.c=flow-in.output
@@ -0,0 +1,4 @@
+l\x0a
+i    
+w  
+?a  b
diff --git a/tests/s-ns-plain-next.n=4.c=flow-in.input b/tests/s-ns-plain-next.n=4.c=flow-in.input
deleted file mode 100644
--- a/tests/s-ns-plain-next.n=4.c=flow-in.input
+++ /dev/null
@@ -1,2 +0,0 @@
-
-      a  b
diff --git a/tests/s-ns-plain-next.n=4.c=flow-in.invalid.input b/tests/s-ns-plain-next.n=4.c=flow-in.invalid.input
deleted file mode 100644
--- a/tests/s-ns-plain-next.n=4.c=flow-in.invalid.input
+++ /dev/null
@@ -1,2 +0,0 @@
-  
-    12,345
diff --git a/tests/s-ns-plain-next.n=4.c=flow-in.invalid.output b/tests/s-ns-plain-next.n=4.c=flow-in.invalid.output
deleted file mode 100644
--- a/tests/s-ns-plain-next.n=4.c=flow-in.invalid.output
+++ /dev/null
@@ -1,5 +0,0 @@
-w  
-l\x0a
-i    
-?12
-!$InputFile$: line 2: column 6: Expected end of input
diff --git a/tests/s-ns-plain-next.n=4.c=flow-in.output b/tests/s-ns-plain-next.n=4.c=flow-in.output
deleted file mode 100644
--- a/tests/s-ns-plain-next.n=4.c=flow-in.output
+++ /dev/null
@@ -1,4 +0,0 @@
-l\x0a
-i    
-w  
-?a  b
diff --git a/tests/s-ns-single-chars.input b/tests/s-ns-single-chars.input
deleted file mode 100644
--- a/tests/s-ns-single-chars.input
+++ /dev/null
@@ -1,1 +0,0 @@
- 	a
diff --git a/tests/s-ns-single-chars.invalid.input b/tests/s-ns-single-chars.invalid.input
deleted file mode 100644
--- a/tests/s-ns-single-chars.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-  'a
diff --git a/tests/s-ns-single-chars.invalid.output b/tests/s-ns-single-chars.invalid.output
deleted file mode 100644
--- a/tests/s-ns-single-chars.invalid.output
+++ /dev/null
@@ -1,4 +0,0 @@
-?  
-E
-I'
-!$InputFile$: line 1: column 3: Unexpected 'a'
diff --git a/tests/s-ns-single-chars.output b/tests/s-ns-single-chars.output
deleted file mode 100644
--- a/tests/s-ns-single-chars.output
+++ /dev/null
@@ -1,1 +0,0 @@
-? \x09a
diff --git a/tests/s-ns-single-next-line.n=4.input b/tests/s-ns-single-next-line.n=4.input
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-single-next-line.n=4.input
@@ -0,0 +1,2 @@
+
+    	a b	c
diff --git a/tests/s-ns-single-next-line.n=4.invalid.input b/tests/s-ns-single-next-line.n=4.invalid.input
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-single-next-line.n=4.invalid.input
@@ -0,0 +1,1 @@
+
diff --git a/tests/s-ns-single-next-line.n=4.invalid.output b/tests/s-ns-single-next-line.n=4.invalid.output
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-single-next-line.n=4.invalid.output
@@ -0,0 +1,2 @@
+l\x0a
+!$InputFile$: line 2: column 0: Unexpected end of input
diff --git a/tests/s-ns-single-next-line.n=4.output b/tests/s-ns-single-next-line.n=4.output
new file mode 100644
--- /dev/null
+++ b/tests/s-ns-single-next-line.n=4.output
@@ -0,0 +1,4 @@
+l\x0a
+i    
+w\x09
+?a b\x09c
diff --git a/tests/s-ns-single-next.n=4.input b/tests/s-ns-single-next.n=4.input
deleted file mode 100644
--- a/tests/s-ns-single-next.n=4.input
+++ /dev/null
@@ -1,2 +0,0 @@
-
-    	a b	c
diff --git a/tests/s-ns-single-next.n=4.invalid.input b/tests/s-ns-single-next.n=4.invalid.input
deleted file mode 100644
--- a/tests/s-ns-single-next.n=4.invalid.input
+++ /dev/null
@@ -1,1 +0,0 @@
-
diff --git a/tests/s-ns-single-next.n=4.invalid.output b/tests/s-ns-single-next.n=4.invalid.output
deleted file mode 100644
--- a/tests/s-ns-single-next.n=4.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-l\x0a
-!$InputFile$: line 2: column 0: Unexpected end of input
diff --git a/tests/s-ns-single-next.n=4.output b/tests/s-ns-single-next.n=4.output
deleted file mode 100644
--- a/tests/s-ns-single-next.n=4.output
+++ /dev/null
@@ -1,4 +0,0 @@
-l\x0a
-i    
-w\x09
-?a b\x09c
diff --git a/tests/s-single-multi.n=4.input b/tests/s-single-multi.n=4.input
deleted file mode 100644
--- a/tests/s-single-multi.n=4.input
+++ /dev/null
@@ -1,2 +0,0 @@
- a 
-    	a b	c 
diff --git a/tests/s-single-multi.n=4.invalid.input b/tests/s-single-multi.n=4.invalid.input
deleted file mode 100644
--- a/tests/s-single-multi.n=4.invalid.input
+++ /dev/null
@@ -1,2 +0,0 @@
- a
-  b
diff --git a/tests/s-single-multi.n=4.invalid.output b/tests/s-single-multi.n=4.invalid.output
deleted file mode 100644
--- a/tests/s-single-multi.n=4.invalid.output
+++ /dev/null
@@ -1,2 +0,0 @@
-? a
-!$InputFile$: line 1: column 2: Expected end of input
diff --git a/tests/s-single-multi.n=4.output b/tests/s-single-multi.n=4.output
deleted file mode 100644
--- a/tests/s-single-multi.n=4.output
+++ /dev/null
@@ -1,6 +0,0 @@
-? a
-w 
-l\x0a
-i    
-w\x09
-?a b\x09c 
diff --git a/yaml2yeast-test/Main.hs b/yaml2yeast-test/Main.hs
--- a/yaml2yeast-test/Main.hs
+++ b/yaml2yeast-test/Main.hs
@@ -74,10 +74,8 @@
 data TestType = Plain  -- ^ Production without arguments.
               | WithN  -- ^ Production requiring $n$ argument.
               | WithC  -- ^ Production requiring $c$ argument.
-              | WithS  -- ^ Production requiring $s$ argument.
               | WithT  -- ^ Production requiring $t$ argument.
               | WithNC -- ^ Production requiring $n$ and $c$ arguments.
-              | WithNS -- ^ Production requiring $n$ and $s$ arguments.
               | WithNT -- ^ Production requiring $n$ and $t$ arguments.
   deriving Eq
 
@@ -89,10 +87,8 @@
            Plain  -> ""
            WithN  -> " n"
            WithC  -> " c"
-           WithS  -> " s"
            WithT  -> " t"
            WithNC -> " n c"
-           WithNS -> " n s"
            WithNT -> " n t"
 
 -- | @isTestInputFile file@ returns whether the specified /file/ is a test
@@ -117,18 +113,15 @@
 testType :: FilePath -> IO TestType
 testType file = do withN <- isWith "n" file
                    withC <- isWith "c" file
-                   withS <- isWith "s" file
                    withT <- isWith "t" file
-                   case (withN, withC, withS, withT) of
-                        (False, False, False, False) -> return Plain
-                        (True,  False, False, False) -> return WithN
-                        (False, False, True,  False) -> return WithS
-                        (False, True,  False, False) -> return WithC
-                        (False, False, False, True)  -> return WithT
-                        (True,  True,  False, False) -> return WithNC
-                        (True,  False, True,  False) -> return WithNS
-                        (True,  False, False, True)  -> return WithNT
-                        (_,     _,     _,     _)     -> error $ file ++ ": unknown parameters combination"
+                   case (withN, withC, withT) of
+                        (False, False, False) -> return Plain
+                        (True,  False, False) -> return WithN
+                        (False, True,  False) -> return WithC
+                        (False, False, True)  -> return WithT
+                        (True,  True,  False) -> return WithNC
+                        (True,  False, True)  -> return WithNT
+                        (_,     _,     _)     -> error $ file ++ ": unknown parameters combination"
 
 -- | @testProduction file@ extracts the production name from a test input
 -- /file/ name (file name starts with \"/pattern/@.@\").
@@ -177,10 +170,8 @@
                        Plain  -> tokenizer (testProduction inputFile)
                        WithN  -> tokenizerWithN (testProduction inputFile)  (testParameter "n" inputFile)
                        WithC  -> tokenizerWithC (testProduction inputFile)  (testParameter "c" inputFile)
-                       WithS  -> tokenizerWithS (testProduction inputFile)  (testParameter "s" inputFile)
                        WithT  -> tokenizerWithT (testProduction inputFile)  (testParameter "t" inputFile)
                        WithNC -> tokenizerWithNC (testProduction inputFile) (testParameter "n" inputFile) (testParameter "c" inputFile)
-                       WithNS -> tokenizerWithNS (testProduction inputFile) (testParameter "n" inputFile) (testParameter "s" inputFile)
                        WithNT -> tokenizerWithNT (testProduction inputFile) (testParameter "n" inputFile) (testParameter "t" inputFile)
      case result of
           Nothing -> assertFailure $ inputFile ++ ": unknown production" ++ (show runType) ++ ": " ++ (testProduction inputFile)
diff --git a/yaml2yeast/Main.hs b/yaml2yeast/Main.hs
--- a/yaml2yeast/Main.hs
+++ b/yaml2yeast/Main.hs
@@ -163,7 +163,6 @@
           | Following              -- ^ Emit unparsed text following an error.
           | ParamN (Maybe Int)     -- ^ Specify $n$ parameter.
           | ParamT (Maybe Chomp)   -- ^ Specify $t$ parameter.
-          | ParamS (Maybe Style)   -- ^ Specify $s$ parameter.
           | ParamC (Maybe Context) -- ^ Specify $c$ parameter.
           | Input String           -- ^ Specify input file name.
     deriving Show
@@ -192,9 +191,6 @@
       Option ['c'] ["context"]
              (ReqArg (ParamC . readParameter) "context")
              "c parameter value (context)",
-      Option ['s'] ["style"]
-             (ReqArg (ParamS . readParameter) "style")
-             "s parameter value (style)",
       Option ['t'] ["chomp"]
              (ReqArg (ParamT . readParameter) "chomp")
              "t parameter value (chomp)"
@@ -229,7 +225,6 @@
       oProduction    :: String,        -- ^ Name of start production.
       oN             :: Maybe Int,     -- ^ N parameter, if any.
       oC             :: Maybe Context, -- ^ C parameter, if any.
-      oS             :: Maybe Style,   -- ^ S parameter, if any.
       oT             :: Maybe Chomp    -- ^ T parameter, if any.
   }
 
@@ -243,7 +238,6 @@
       oProduction    = "l-yaml-stream",
       oN             = Nothing,
       oC             = Nothing,
-      oS             = Nothing,
       oT             = Nothing
   }
 
@@ -259,7 +253,6 @@
        Input name      -> applyFlags flags options { oInput = name }
        ParamN value    -> applyFlags flags options { oN = value }
        ParamC value    -> applyFlags flags options { oC = value }
-       ParamS value    -> applyFlags flags options { oS = value }
        ParamT value    -> applyFlags flags options { oT = value }
        Production name -> applyFlags flags options { oProduction = name }
 
@@ -282,16 +275,14 @@
 -- | @runWith options@ runs the program with the specified /options/.
 runWith :: Options -> IO ()
 runWith options =
-  do let resolved = case ((oN options), (oC options), (oS options), (oT options)) of
-                         (Nothing,    Nothing,    Nothing,    Nothing) -> tokenizer       (oProduction options)
-                         (Just n,     Nothing,    Nothing,    Nothing) -> tokenizerWithN  (oProduction options) n
-                         (Nothing,    Just c,     Nothing,    Nothing) -> tokenizerWithC  (oProduction options) c
-                         (Nothing,    Nothing,    Just s,     Nothing) -> tokenizerWithS  (oProduction options) s
-                         (Nothing,    Nothing,    Nothing,    Just t)  -> tokenizerWithT  (oProduction options) t
-                         (Just n,     Just c,     Nothing,    Nothing) -> tokenizerWithNC (oProduction options) n c
-                         (Just n,     Nothing,    Just s,     Nothing) -> tokenizerWithNS (oProduction options) n s
-                         (Just n,     Nothing,    Nothing,    Just t)  -> tokenizerWithNT (oProduction options) n t
-                         _                                             -> error "No production with this combination of parameters"
+  do let resolved = case ((oN options), (oC options), (oT options)) of
+                         (Nothing,    Nothing,    Nothing) -> tokenizer       (oProduction options)
+                         (Just n,     Nothing,    Nothing) -> tokenizerWithN  (oProduction options) n
+                         (Nothing,    Just c,     Nothing) -> tokenizerWithC  (oProduction options) c
+                         (Nothing,    Nothing,    Just t)  -> tokenizerWithT  (oProduction options) t
+                         (Just n,     Just c,     Nothing) -> tokenizerWithNC (oProduction options) n c
+                         (Just n,     Nothing,    Just t)  -> tokenizerWithNT (oProduction options) n t
+                         _                                 -> error "No production with this combination of parameters"
      case resolved of
           Nothing     -> error $ "No production " ++ (oProduction options) ++ " or it doesn't take this combination of parameters"
           Just parser -> do text <- fromFile (oInput options)
diff --git a/yeast2html b/yeast2html
--- a/yeast2html
+++ b/yeast2html
@@ -52,7 +52,8 @@
     Y   => { code => 'Y', type => 'begin', title => "Stream" },
     y   => { code => 'y', type => 'end',   title => "Stream" },
     '!' => { code => '!', type => 'error', title => "Error" },
-    '-' => { code => '-', type => 'text',  title => "Unparsed" }
+    '-' => { code => '-', type => 'text',  title => "Unparsed" },
+    '~' => { code => '~', type => 'text',  title => "Empty" }
 };
 
 # Command line arguments.
@@ -98,6 +99,7 @@
 
 sub load_input {
     my $stack = [];
+    my $has_content = [];
     my $num = 0;
     while (my $line = <>) {
         $num++;
@@ -118,14 +120,21 @@
             $text =~ s:\\x85:&dArr;:g;
             $text =~ s:\\u2028:&sect;:g;
             $text =~ s:\\u2029:&para;:g;
+            $text =~ s:\\x09:&rarr;:g;
             $text =~ s:\t:&rarr;:g;
             $text =~ s: :&middot;:g;
             $text =~ s:\\u202F:&diams;:g;
         }
         if ($class->{type} eq 'begin') {
-            push(@$stack, [$num, $class]);
+            push(@$stack, [ $num, $class ]);
+            push(@$has_content, 0);
         } elsif ($class->{type} eq 'end') {
             my $title = $class->{title};
+            my $had_content = pop(@$has_content);
+            push(@$data, [ $code2class->{'~'}, '&deg;' ]) unless $had_content;
+            for (my $i = 0; $i < @$has_content; $i++) {
+                $has_content->[$i] = 1;
+            }
             my ($begin_num, $begin_class) = @{pop(@$stack)};
             my $begin_code = $begin_class->{code};
             my $begin_title = $begin_class->{title};
@@ -133,7 +142,12 @@
               . "ends line $begin_num ($begin_code/$begin_title)\n")
                 if $title ne $begin_title;
         }
-        push(@$data, [$class, $text]);
+        push(@$data, [ $class, $text ]);
+        if ($text && $text ne '') {
+            for (my $i = 0; $i < @$has_content; $i++) {
+                $has_content->[$i] = 1;
+            }
+        }
     }
     #die("Unterminated groups\n") if @$stack;
 }
@@ -386,6 +400,7 @@
         if ($class->{type} eq 'bom') {
             print $output "&hArr;</span>";
         } else {
+            $text = "&deg;" unless $text;
             print $output "$text</span>";
         }
         $pending_break = $class->{type} eq 'line';
