You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2019/11/14 03:46:40 UTC

[trafficserver] branch 9.0.x updated (8f373b4 -> 73a6ece)

This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a change to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git.


    from 8f373b4  Fix build warnings, since some configs do not have docs
     new 23d6b2f  tslua: Exposes set/get method for server request objects
     new 8978e64  Re-order READ_REQUEST_ HDR_HOOK and PRE_REMAP_HOOK
     new cece5e5  Updates yaml-cpp to 0.6.3
     new 73a6ece  Fixed gcc7 issue with yaml-cpp 0.6.3

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 doc/admin-guide/plugins/header_rewrite.en.rst      |    2 +-
 doc/admin-guide/plugins/lua.en.rst                 |   42 +
 lib/yamlcpp/.gitignore                             |    1 +
 lib/yamlcpp/CMakeLists.txt                         |  134 +--
 lib/yamlcpp/README.md                              |    4 +-
 lib/yamlcpp/include/yaml-cpp/binary.h              |   12 +-
 lib/yamlcpp/include/yaml-cpp/contrib/anchordict.h  |    3 +-
 lib/yamlcpp/include/yaml-cpp/emitter.h             |   33 +-
 lib/yamlcpp/include/yaml-cpp/eventhandler.h        |    7 +-
 lib/yamlcpp/include/yaml-cpp/exceptions.h          |   44 +-
 lib/yamlcpp/include/yaml-cpp/node/convert.h        |   11 +-
 lib/yamlcpp/include/yaml-cpp/node/detail/impl.h    |   81 +-
 .../include/yaml-cpp/node/detail/iterator.h        |   16 +-
 lib/yamlcpp/include/yaml-cpp/node/detail/memory.h  |    5 +-
 lib/yamlcpp/include/yaml-cpp/node/detail/node.h    |   12 +-
 .../include/yaml-cpp/node/detail/node_data.h       |    2 +-
 .../include/yaml-cpp/node/detail/node_iterator.h   |    4 +-
 lib/yamlcpp/include/yaml-cpp/node/impl.h           |  115 +-
 lib/yamlcpp/include/yaml-cpp/node/node.h           |    4 +
 lib/yamlcpp/include/yaml-cpp/noncopyable.h         |   25 -
 lib/yamlcpp/include/yaml-cpp/ostream_wrapper.h     |   10 +-
 lib/yamlcpp/include/yaml-cpp/parser.h              |   10 +-
 lib/yamlcpp/include/yaml-cpp/traits.h              |   32 +
 lib/yamlcpp/src/binary.cpp                         |   11 +-
 lib/yamlcpp/src/collectionstack.h                  |    6 +-
 lib/yamlcpp/src/contrib/graphbuilder.cpp           |    2 +-
 lib/yamlcpp/src/contrib/graphbuilderadapter.cpp    |    6 +-
 lib/yamlcpp/src/contrib/graphbuilderadapter.h      |   16 +-
 lib/yamlcpp/src/contrib/yaml-cpp.natvis            |   32 +
 lib/yamlcpp/src/contrib/yaml-cpp.natvis.md         |    9 +
 lib/yamlcpp/src/directives.cpp                     |    9 +-
 lib/yamlcpp/src/emitfromevents.cpp                 |    7 +-
 lib/yamlcpp/src/emitter.cpp                        |   10 +-
 lib/yamlcpp/src/emitterstate.cpp                   |   44 +-
 lib/yamlcpp/src/emitterstate.h                     |    9 +-
 lib/yamlcpp/src/emitterutils.cpp                   |   28 +-
 lib/yamlcpp/src/exceptions.cpp                     |    2 +-
 lib/yamlcpp/src/exp.h                              |   60 +-
 lib/yamlcpp/src/node_data.cpp                      |   32 +-
 lib/yamlcpp/src/nodebuilder.cpp                    |   11 +-
 lib/yamlcpp/src/nodebuilder.h                      |    6 +-
 lib/yamlcpp/src/nodeevents.cpp                     |    4 +-
 lib/yamlcpp/src/nodeevents.h                       |    8 +-
 lib/yamlcpp/src/ostream_wrapper.cpp                |   11 +-
 lib/yamlcpp/src/parser.cpp                         |    6 +-
 lib/yamlcpp/src/ptr_vector.h                       |   12 +-
 lib/yamlcpp/src/regex_yaml.cpp                     |   20 +-
 lib/yamlcpp/src/regex_yaml.h                       |   13 +-
 lib/yamlcpp/src/scanner.cpp                        |   13 +-
 lib/yamlcpp/src/scanner.h                          |    2 +-
 lib/yamlcpp/src/scanscalar.cpp                     |    2 +-
 lib/yamlcpp/src/scantoken.cpp                      |    4 +-
 lib/yamlcpp/src/setting.h                          |   24 +-
 lib/yamlcpp/src/simplekey.cpp                      |    2 +-
 lib/yamlcpp/src/singledocparser.cpp                |   26 +-
 lib/yamlcpp/src/singledocparser.h                  |   14 +-
 lib/yamlcpp/src/stream.cpp                         |   32 +-
 lib/yamlcpp/src/stream.h                           |    9 +-
 lib/yamlcpp/src/streamcharsource.h                 |    8 +-
 lib/yamlcpp/src/tag.cpp                            |    5 +-
 lib/yamlcpp/src/token.h                            |   13 +-
 lib/yamlcpp/test/CMakeLists.txt                    |   73 +-
 lib/yamlcpp/test/create-emitter-tests.py           |   28 +-
 lib/yamlcpp/test/integration/emitter_test.cpp      |   67 +-
 .../test/integration/error_messages_test.cpp       |   61 +
 lib/yamlcpp/test/integration/gen_emitter_test.cpp  | 1177 +++++++++++---------
 lib/yamlcpp/test/integration/handler_spec_test.cpp |   14 +-
 lib/yamlcpp/test/integration/load_node_test.cpp    |   22 +-
 lib/yamlcpp/test/mock_event_handler.h              |    3 +-
 lib/yamlcpp/test/node/node_test.cpp                |  130 ++-
 lib/yamlcpp/test/regex_test.cpp                    |   18 +-
 lib/yamlcpp/util/CMakeLists.txt                    |   18 +-
 plugins/experimental/cookie_remap/cookie_remap.cc  |    6 +-
 plugins/lua/ts_lua_server_request.c                |   55 +-
 74 files changed, 1787 insertions(+), 1022 deletions(-)
 delete mode 100644 lib/yamlcpp/include/yaml-cpp/noncopyable.h
 create mode 100644 lib/yamlcpp/src/contrib/yaml-cpp.natvis
 create mode 100644 lib/yamlcpp/src/contrib/yaml-cpp.natvis.md
 create mode 100644 lib/yamlcpp/test/integration/error_messages_test.cpp


[trafficserver] 03/04: Updates yaml-cpp to 0.6.3

Posted by zw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit cece5e5e88dc1bf7c1ed49bbf1a6f885d9537c22
Author: Randall Meyer <rr...@apache.org>
AuthorDate: Tue Nov 12 09:48:19 2019 +0800

    Updates yaml-cpp to 0.6.3
    
    (cherry picked from commit 14aadf430d04ec8435df7f891443194921d35d05)
---
 lib/yamlcpp/.gitignore                             |    1 +
 lib/yamlcpp/CMakeLists.txt                         |  134 +--
 lib/yamlcpp/README.md                              |    4 +-
 lib/yamlcpp/include/yaml-cpp/binary.h              |   12 +-
 lib/yamlcpp/include/yaml-cpp/contrib/anchordict.h  |    3 +-
 lib/yamlcpp/include/yaml-cpp/emitter.h             |   33 +-
 lib/yamlcpp/include/yaml-cpp/eventhandler.h        |    7 +-
 lib/yamlcpp/include/yaml-cpp/exceptions.h          |   44 +-
 lib/yamlcpp/include/yaml-cpp/node/convert.h        |   11 +-
 lib/yamlcpp/include/yaml-cpp/node/detail/impl.h    |   81 +-
 .../include/yaml-cpp/node/detail/iterator.h        |   16 +-
 lib/yamlcpp/include/yaml-cpp/node/detail/memory.h  |    5 +-
 lib/yamlcpp/include/yaml-cpp/node/detail/node.h    |   12 +-
 .../include/yaml-cpp/node/detail/node_data.h       |    2 +-
 .../include/yaml-cpp/node/detail/node_iterator.h   |    4 +-
 lib/yamlcpp/include/yaml-cpp/node/impl.h           |  115 +-
 lib/yamlcpp/include/yaml-cpp/node/node.h           |    4 +
 lib/yamlcpp/include/yaml-cpp/noncopyable.h         |   25 -
 lib/yamlcpp/include/yaml-cpp/ostream_wrapper.h     |   10 +-
 lib/yamlcpp/include/yaml-cpp/parser.h              |   10 +-
 lib/yamlcpp/include/yaml-cpp/traits.h              |   32 +
 lib/yamlcpp/src/binary.cpp                         |   11 +-
 lib/yamlcpp/src/collectionstack.h                  |    6 +-
 lib/yamlcpp/src/contrib/graphbuilder.cpp           |    2 +-
 lib/yamlcpp/src/contrib/graphbuilderadapter.cpp    |    6 +-
 lib/yamlcpp/src/contrib/graphbuilderadapter.h      |   16 +-
 lib/yamlcpp/src/contrib/yaml-cpp.natvis            |   32 +
 lib/yamlcpp/src/contrib/yaml-cpp.natvis.md         |    9 +
 lib/yamlcpp/src/directives.cpp                     |    9 +-
 lib/yamlcpp/src/emitfromevents.cpp                 |    7 +-
 lib/yamlcpp/src/emitter.cpp                        |   10 +-
 lib/yamlcpp/src/emitterstate.cpp                   |   44 +-
 lib/yamlcpp/src/emitterstate.h                     |    9 +-
 lib/yamlcpp/src/emitterutils.cpp                   |   28 +-
 lib/yamlcpp/src/exceptions.cpp                     |    2 +-
 lib/yamlcpp/src/exp.h                              |   60 +-
 lib/yamlcpp/src/node_data.cpp                      |   32 +-
 lib/yamlcpp/src/nodebuilder.cpp                    |   11 +-
 lib/yamlcpp/src/nodebuilder.h                      |    6 +-
 lib/yamlcpp/src/nodeevents.cpp                     |    4 +-
 lib/yamlcpp/src/nodeevents.h                       |    8 +-
 lib/yamlcpp/src/ostream_wrapper.cpp                |   11 +-
 lib/yamlcpp/src/parser.cpp                         |    6 +-
 lib/yamlcpp/src/ptr_vector.h                       |   12 +-
 lib/yamlcpp/src/regex_yaml.cpp                     |   20 +-
 lib/yamlcpp/src/regex_yaml.h                       |   13 +-
 lib/yamlcpp/src/scanner.cpp                        |   13 +-
 lib/yamlcpp/src/scanner.h                          |    2 +-
 lib/yamlcpp/src/scanscalar.cpp                     |    2 +-
 lib/yamlcpp/src/scantoken.cpp                      |    4 +-
 lib/yamlcpp/src/setting.h                          |   24 +-
 lib/yamlcpp/src/simplekey.cpp                      |    2 +-
 lib/yamlcpp/src/singledocparser.cpp                |   26 +-
 lib/yamlcpp/src/singledocparser.h                  |   14 +-
 lib/yamlcpp/src/stream.cpp                         |   32 +-
 lib/yamlcpp/src/stream.h                           |    9 +-
 lib/yamlcpp/src/streamcharsource.h                 |    8 +-
 lib/yamlcpp/src/tag.cpp                            |    5 +-
 lib/yamlcpp/src/token.h                            |   13 +-
 lib/yamlcpp/test/CMakeLists.txt                    |   73 +-
 lib/yamlcpp/test/create-emitter-tests.py           |   28 +-
 lib/yamlcpp/test/integration/emitter_test.cpp      |   67 +-
 .../test/integration/error_messages_test.cpp       |   61 +
 lib/yamlcpp/test/integration/gen_emitter_test.cpp  | 1177 +++++++++++---------
 lib/yamlcpp/test/integration/handler_spec_test.cpp |   14 +-
 lib/yamlcpp/test/integration/load_node_test.cpp    |   22 +-
 lib/yamlcpp/test/mock_event_handler.h              |    3 +-
 lib/yamlcpp/test/node/node_test.cpp                |  130 ++-
 lib/yamlcpp/test/regex_test.cpp                    |   18 +-
 lib/yamlcpp/util/CMakeLists.txt                    |   18 +-
 70 files changed, 1687 insertions(+), 1017 deletions(-)

diff --git a/lib/yamlcpp/.gitignore b/lib/yamlcpp/.gitignore
index 567609b..0e29154 100644
--- a/lib/yamlcpp/.gitignore
+++ b/lib/yamlcpp/.gitignore
@@ -1 +1,2 @@
 build/
+/tags
diff --git a/lib/yamlcpp/CMakeLists.txt b/lib/yamlcpp/CMakeLists.txt
index d2d8810..4732a45 100644
--- a/lib/yamlcpp/CMakeLists.txt
+++ b/lib/yamlcpp/CMakeLists.txt
@@ -1,38 +1,15 @@
 ###
 ### CMake settings
 ###
-## Due to Mac OSX we need to keep compatibility with CMake 2.6
 # see http://www.cmake.org/Wiki/CMake_Policies
-cmake_minimum_required(VERSION 2.6)
-# see http://www.cmake.org/cmake/help/cmake-2-8-docs.html#policy:CMP0012
-if(POLICY CMP0012)
-	cmake_policy(SET CMP0012 OLD)
-endif()
-# see http://www.cmake.org/cmake/help/cmake-2-8-docs.html#policy:CMP0015
-if(POLICY CMP0015)
-	cmake_policy(SET CMP0015 OLD)
-endif()
-# see https://cmake.org/cmake/help/latest/policy/CMP0042.html
-if(POLICY CMP0042)
-	# Enable MACOSX_RPATH by default.
-	cmake_policy(SET CMP0042 NEW)
-endif()
+cmake_minimum_required(VERSION 3.1)
 
 include(CheckCXXCompilerFlag)
 
-
 ###
 ### Project settings
 ###
-project(YAML_CPP)
-
-set(YAML_CPP_VERSION_MAJOR "0")
-set(YAML_CPP_VERSION_MINOR "6")
-set(YAML_CPP_VERSION_PATCH "2")
-set(YAML_CPP_VERSION "${YAML_CPP_VERSION_MAJOR}.${YAML_CPP_VERSION_MINOR}.${YAML_CPP_VERSION_PATCH}")
-
-enable_testing()
-
+project(YAML_CPP VERSION 0.6.3)
 
 ###
 ### Project options
@@ -41,21 +18,26 @@ enable_testing()
 option(YAML_CPP_BUILD_TESTS "Enable testing" ON)
 option(YAML_CPP_BUILD_TOOLS "Enable parse tools" ON)
 option(YAML_CPP_BUILD_CONTRIB "Enable contrib stuff in library" ON)
+option(YAML_CPP_INSTALL "Enable generation of install target" ON)
 
 ## Build options
 # --> General
 # see http://www.cmake.org/cmake/help/cmake2.6docs.html#variable:BUILD_SHARED_LIBS
 #     http://www.cmake.org/cmake/help/cmake2.6docs.html#command:add_library
-option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
+option(YAML_BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
 
 # --> Apple
-option(APPLE_UNIVERSAL_BIN "Apple: Build universal binary" OFF)
+if(APPLE)
+    option(YAML_APPLE_UNIVERSAL_BIN "Apple: Build universal binary" OFF)
+endif()
 
 # --> Microsoft Visual C++
 # see http://msdn.microsoft.com/en-us/library/aa278396(v=VS.60).aspx
 #     http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=VS.71).aspx
-option(MSVC_SHARED_RT "MSVC: Build with shared runtime libs (/MD)" ON)
-option(MSVC_STHREADED_RT "MSVC: Build with single-threaded static runtime libs (/ML until VS .NET 2003)" OFF)
+if(MSVC)
+    option(YAML_MSVC_SHARED_RT "MSVC: Build with shared runtime libs (/MD)" ON)
+    option(YAML_MSVC_STHREADED_RT "MSVC: Build with single-threaded static runtime libs (/ML until VS .NET 2003)" OFF)
+endif()
 
 ###
 ### Sources, headers, directories and libs
@@ -116,9 +98,10 @@ if(VERBOSE)
 	message(STATUS "contrib_private_headers: ${contrib_private_headers}")
 endif()
 
-include_directories(${YAML_CPP_SOURCE_DIR}/src)
-include_directories(${YAML_CPP_SOURCE_DIR}/include)
-
+if (CMAKE_VERSION VERSION_LESS 2.8.12)
+    include_directories(${YAML_CPP_SOURCE_DIR}/src)
+    include_directories(${YAML_CPP_SOURCE_DIR}/include)
+endif()
 
 
 ###
@@ -127,14 +110,14 @@ include_directories(${YAML_CPP_SOURCE_DIR}/include)
 set(yaml_c_flags ${CMAKE_C_FLAGS})
 set(yaml_cxx_flags ${CMAKE_CXX_FLAGS})
 
-if(BUILD_SHARED_LIBS)
+if(YAML_BUILD_SHARED_LIBS)
 	set(LABEL_SUFFIX "shared")
 else()
 	set(LABEL_SUFFIX "static")
 endif()
 
 if(APPLE)
-	if(APPLE_UNIVERSAL_BIN)
+	if(YAML_APPLE_UNIVERSAL_BIN)
 		set(CMAKE_OSX_ARCHITECTURES ppc;i386)
 	endif()
 endif()
@@ -145,7 +128,7 @@ if(IPHONE)
 endif()
 
 if(WIN32)
-	if(BUILD_SHARED_LIBS)
+	if(YAML_BUILD_SHARED_LIBS)
 		add_definitions(-D${PROJECT_NAME}_DLL)	# use or build Windows DLL
 	endif()
 	if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
@@ -155,7 +138,7 @@ endif()
 
 # GCC or Clang or Intel Compiler specialities
 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
-   CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR
+   (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") OR
    CMAKE_CXX_COMPILER_ID MATCHES "Intel")
 
 	### General stuff
@@ -170,32 +153,27 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
 		set(CMAKE_BUILD_TYPE Release)
 	endif()
 	#
-	set(CMAKE_CXX_FLAGS_RELEASE "-O2")
-	set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
-	set(CMAKE_CXX_FLAGS_DEBUG "-g")
-	set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os")
-	#
 	set(GCC_EXTRA_OPTIONS "")
 	#
-	if(BUILD_SHARED_LIBS)
+	if(YAML_BUILD_SHARED_LIBS)
 		set(GCC_EXTRA_OPTIONS "${GCC_EXTRA_OPTIONS} -fPIC")
 	endif()
 	#
-	set(FLAG_TESTED "-Wextra")
+	set(FLAG_TESTED "-Wextra -Wshadow -Weffc++ -pedantic -pedantic-errors")
 	check_cxx_compiler_flag(${FLAG_TESTED} FLAG_WEXTRA)
 	if(FLAG_WEXTRA)
 		set(GCC_EXTRA_OPTIONS "${GCC_EXTRA_OPTIONS} ${FLAG_TESTED}")
 	endif()
 	#
-	set(yaml_cxx_flags "-Wall ${GCC_EXTRA_OPTIONS} -pedantic -Wno-long-long -std=c++11 ${yaml_cxx_flags}")
+	set(yaml_cxx_flags "-Wall ${GCC_EXTRA_OPTIONS} -pedantic -Wno-long-long ${yaml_cxx_flags}")
 
 	### Make specific
 	if(${CMAKE_BUILD_TOOL} MATCHES make OR ${CMAKE_BUILD_TOOL} MATCHES gmake)
-		add_custom_target(debuggable $(MAKE) clean
+		add_custom_target(debuggable ${CMAKE_MAKE_PROGRAM} clean
 			COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
 			COMMENT "Adjusting settings for debug compilation"
 			VERBATIM)
-		add_custom_target(releasable $(MAKE) clean
+		add_custom_target(releasable ${CMAKE_MAKE_PROGRAM} clean
 			COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}
 			COMMENT "Adjusting settings for release compilation"
 			VERBATIM)
@@ -212,8 +190,8 @@ if(MSVC)
 	set(LIB_RT_SUFFIX "md")	# CMake defaults to /MD for MSVC
 	set(LIB_RT_OPTION "/MD")
 	#
-	if(NOT MSVC_SHARED_RT)	# User wants to have static runtime libraries (/MT, /ML)
-		if(MSVC_STHREADED_RT)	# User wants to have old single-threaded static runtime libraries
+	if(NOT YAML_MSVC_SHARED_RT)	# User wants to have static runtime libraries (/MT, /ML)
+		if(YAML_MSVC_STHREADED_RT)	# User wants to have old single-threaded static runtime libraries
 			set(LIB_RT_SUFFIX "ml")
 			set(LIB_RT_OPTION "/ML")
 			if(NOT ${MSVC_VERSION} LESS 1400)
@@ -243,7 +221,7 @@ if(MSVC)
 	set(CMAKE_STATIC_LIBRARY_PREFIX "lib")	# to distinguish static libraries from DLL import libs
 
 	# c) Correct suffixes for static libraries
-	if(NOT BUILD_SHARED_LIBS)
+	if(NOT YAML_BUILD_SHARED_LIBS)
 		### General stuff
 		set(LIB_TARGET_SUFFIX "${LIB_SUFFIX}${LIB_RT_SUFFIX}")
 	endif()
@@ -274,7 +252,24 @@ set(_INSTALL_DESTINATIONS
 ###
 ### Library
 ###
-add_library(yaml-cpp ${library_sources})
+if(YAML_BUILD_SHARED_LIBS)
+    add_library(yaml-cpp SHARED ${library_sources})
+else()
+    add_library(yaml-cpp STATIC ${library_sources})
+endif()
+
+if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
+    target_include_directories(yaml-cpp
+        PUBLIC $<BUILD_INTERFACE:${YAML_CPP_SOURCE_DIR}/include>
+               $<INSTALL_INTERFACE:${INCLUDE_INSTALL_ROOT_DIR}>
+        PRIVATE $<BUILD_INTERFACE:${YAML_CPP_SOURCE_DIR}/src>)
+endif()
+
+set_target_properties(yaml-cpp PROPERTIES
+    CXX_STANDARD 11
+    CXX_STANDARD_REQUIRED ON
+)
+
 set_target_properties(yaml-cpp PROPERTIES
   COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags}"
 )
@@ -292,7 +287,7 @@ if(IPHONE)
 endif()
 
 if(MSVC)
-	if(NOT BUILD_SHARED_LIBS)
+	if(NOT YAML_BUILD_SHARED_LIBS)
 		# correct library names
 		set_target_properties(yaml-cpp PROPERTIES
 			DEBUG_POSTFIX "${LIB_TARGET_SUFFIX}d"
@@ -303,12 +298,14 @@ if(MSVC)
 	endif()
 endif()
 
-install(TARGETS yaml-cpp EXPORT yaml-cpp-targets ${_INSTALL_DESTINATIONS})
-install(
-	DIRECTORY ${header_directory}
-	DESTINATION ${INCLUDE_INSTALL_DIR}
-	FILES_MATCHING PATTERN "*.h"
-)
+if (YAML_CPP_INSTALL)
+	install(TARGETS yaml-cpp EXPORT yaml-cpp-targets ${_INSTALL_DESTINATIONS})
+	install(
+		DIRECTORY ${header_directory}
+		DESTINATION ${INCLUDE_INSTALL_DIR}
+		FILES_MATCHING PATTERN "*.h"
+	)
+endif()
 
 export(
     TARGETS yaml-cpp
@@ -326,6 +323,7 @@ else()
 	set(INSTALL_CMAKE_DIR ${LIB_INSTALL_DIR}/cmake/yaml-cpp)
 endif()
 
+
 file(RELATIVE_PATH REL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}" "${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_ROOT_DIR}")
 set(CONFIG_INCLUDE_DIRS "\${YAML_CPP_CMAKE_DIR}/${REL_INCLUDE_DIR}")
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config.cmake.in
@@ -334,16 +332,19 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config.cmake.in
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config-version.cmake.in
 	"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" @ONLY)
 
-install(FILES
-	"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yaml-cpp-config.cmake"
-	"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
-	DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
-install(EXPORT yaml-cpp-targets DESTINATION ${INSTALL_CMAKE_DIR})
+if (YAML_CPP_INSTALL)
+	install(FILES
+		"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yaml-cpp-config.cmake"
+		"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
+		DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
+	install(EXPORT yaml-cpp-targets DESTINATION ${INSTALL_CMAKE_DIR})
+
+	if(UNIX)
+		set(PC_FILE ${CMAKE_BINARY_DIR}/yaml-cpp.pc)
+		configure_file("yaml-cpp.pc.cmake" ${PC_FILE} @ONLY)
+		install(FILES ${PC_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
+	endif()
 
-if(UNIX)
-	set(PC_FILE ${CMAKE_BINARY_DIR}/yaml-cpp.pc)
-	configure_file("yaml-cpp.pc.cmake" ${PC_FILE} @ONLY)
-	install(FILES ${PC_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
 endif()
 
 
@@ -351,6 +352,7 @@ endif()
 ### Extras
 ###
 if(YAML_CPP_BUILD_TESTS)
+	enable_testing()
 	add_subdirectory(test)
 endif()
 if(YAML_CPP_BUILD_TOOLS)
diff --git a/lib/yamlcpp/README.md b/lib/yamlcpp/README.md
index f33d350..e793143 100644
--- a/lib/yamlcpp/README.md
+++ b/lib/yamlcpp/README.md
@@ -26,7 +26,7 @@ cd build
 3. Run CMake. The basic syntax is:
 
 ```
-cmake [-G generator] [-DBUILD_SHARED_LIBS=ON|OFF] ..
+cmake [-G generator] [-DYAML_BUILD_SHARED_LIBS=ON|OFF] ..
 ```
 
   * The `generator` is whatever type of build system you'd like to use. To see a full list of generators on your platform, just run `cmake` (with no arguments). For example:
@@ -34,7 +34,7 @@ cmake [-G generator] [-DBUILD_SHARED_LIBS=ON|OFF] ..
     * On OS X, you might use "Xcode" to generate an Xcode project
     * On a UNIX-y system, simply omit the option to generate a makefile
 
-  * yaml-cpp defaults to building a static library, but you may build a shared library by specifying `-DBUILD_SHARED_LIBS=ON`.
+  * yaml-cpp defaults to building a static library, but you may build a shared library by specifying `-DYAML_BUILD_SHARED_LIBS=ON`.
 
   * For more options on customizing the build, see the [CMakeLists.txt](https://github.com/jbeder/yaml-cpp/blob/master/CMakeLists.txt) file.
 
diff --git a/lib/yamlcpp/include/yaml-cpp/binary.h b/lib/yamlcpp/include/yaml-cpp/binary.h
index 29d5dbd..1050dae 100644
--- a/lib/yamlcpp/include/yaml-cpp/binary.h
+++ b/lib/yamlcpp/include/yaml-cpp/binary.h
@@ -19,9 +19,13 @@ YAML_CPP_API std::vector<unsigned char> DecodeBase64(const std::string &input);
 
 class YAML_CPP_API Binary {
  public:
-  Binary() : m_unownedData(0), m_unownedSize(0) {}
   Binary(const unsigned char *data_, std::size_t size_)
-      : m_unownedData(data_), m_unownedSize(size_) {}
+      : m_data{}, m_unownedData(data_), m_unownedSize(size_) {}
+  Binary() : Binary(nullptr, 0) {}
+  Binary(const Binary &) = default;
+  Binary(Binary &&) = default;
+  Binary &operator=(const Binary &) = default;
+  Binary &operator=(Binary &&) = default;
 
   bool owned() const { return !m_unownedData; }
   std::size_t size() const { return owned() ? m_data.size() : m_unownedSize; }
@@ -35,7 +39,7 @@ class YAML_CPP_API Binary {
       rhs.clear();
       rhs.resize(m_unownedSize);
       std::copy(m_unownedData, m_unownedData + m_unownedSize, rhs.begin());
-      m_unownedData = 0;
+      m_unownedData = nullptr;
       m_unownedSize = 0;
     } else {
       m_data.swap(rhs);
@@ -62,6 +66,6 @@ class YAML_CPP_API Binary {
   const unsigned char *m_unownedData;
   std::size_t m_unownedSize;
 };
-}
+}  // namespace YAML
 
 #endif  // BASE64_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/contrib/anchordict.h b/lib/yamlcpp/include/yaml-cpp/contrib/anchordict.h
index 78db9ec..1b7809b 100644
--- a/lib/yamlcpp/include/yaml-cpp/contrib/anchordict.h
+++ b/lib/yamlcpp/include/yaml-cpp/contrib/anchordict.h
@@ -22,6 +22,7 @@ namespace YAML {
 template <class T>
 class AnchorDict {
  public:
+  AnchorDict() : m_data{} {}
   void Register(anchor_t anchor, T value) {
     if (anchor > m_data.size()) {
       m_data.resize(anchor);
@@ -34,6 +35,6 @@ class AnchorDict {
  private:
   std::vector<T> m_data;
 };
-}
+}  // namespace YAML
 
 #endif  // ANCHORDICT_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/emitter.h b/lib/yamlcpp/include/yaml-cpp/emitter.h
index ef92cc4..6f142b0 100644
--- a/lib/yamlcpp/include/yaml-cpp/emitter.h
+++ b/lib/yamlcpp/include/yaml-cpp/emitter.h
@@ -7,16 +7,18 @@
 #pragma once
 #endif
 
+#include <cmath>
 #include <cstddef>
+#include <limits>
 #include <memory>
 #include <sstream>
 #include <string>
+#include <type_traits>
 
 #include "yaml-cpp/binary.h"
 #include "yaml-cpp/dll.h"
 #include "yaml-cpp/emitterdef.h"
 #include "yaml-cpp/emittermanip.h"
-#include "yaml-cpp/noncopyable.h"
 #include "yaml-cpp/null.h"
 #include "yaml-cpp/ostream_wrapper.h"
 
@@ -28,10 +30,12 @@ struct _Null;
 namespace YAML {
 class EmitterState;
 
-class YAML_CPP_API Emitter : private noncopyable {
+class YAML_CPP_API Emitter {
  public:
   Emitter();
   explicit Emitter(std::ostream& stream);
+  Emitter(const Emitter&) = delete;
+  Emitter& operator=(const Emitter&) = delete;
   ~Emitter();
 
   // output
@@ -152,7 +156,28 @@ inline Emitter& Emitter::WriteStreamable(T value) {
 
   std::stringstream stream;
   SetStreamablePrecision<T>(stream);
-  stream << value;
+
+  bool special = false;
+  if (std::is_floating_point<T>::value) {
+    if ((std::numeric_limits<T>::has_quiet_NaN ||
+         std::numeric_limits<T>::has_signaling_NaN) &&
+        std::isnan(value)) {
+      special = true;
+      stream << ".nan";
+    } else if (std::numeric_limits<T>::has_infinity) {
+      if (value == std::numeric_limits<T>::infinity()) {
+        special = true;
+        stream << ".inf";
+      } else if (value == -std::numeric_limits<T>::infinity()) {
+        special = true;
+        stream << "-.inf";
+      }
+    }
+  }
+
+  if (!special) {
+    stream << value;
+  }
   m_stream << stream.str();
 
   StartedScalar();
@@ -249,6 +274,6 @@ inline Emitter& operator<<(Emitter& emitter, _Indent indent) {
 inline Emitter& operator<<(Emitter& emitter, _Precision precision) {
   return emitter.SetLocalPrecision(precision);
 }
-}
+}  // namespace YAML
 
 #endif  // EMITTER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/eventhandler.h b/lib/yamlcpp/include/yaml-cpp/eventhandler.h
index efe381c..29718ff 100644
--- a/lib/yamlcpp/include/yaml-cpp/eventhandler.h
+++ b/lib/yamlcpp/include/yaml-cpp/eventhandler.h
@@ -34,7 +34,12 @@ class EventHandler {
   virtual void OnMapStart(const Mark& mark, const std::string& tag,
                           anchor_t anchor, EmitterStyle::value style) = 0;
   virtual void OnMapEnd() = 0;
+
+  virtual void OnAnchor(const Mark& /*mark*/,
+                        const std::string& /*anchor_name*/) {
+    // empty default implementation for compatibility
+  }
 };
-}
+}  // namespace YAML
 
 #endif  // EVENTHANDLER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/exceptions.h b/lib/yamlcpp/include/yaml-cpp/exceptions.h
index 9c96859..eef2283 100644
--- a/lib/yamlcpp/include/yaml-cpp/exceptions.h
+++ b/lib/yamlcpp/include/yaml-cpp/exceptions.h
@@ -15,7 +15,7 @@
 
 // This is here for compatibility with older versions of Visual Studio
 // which don't support noexcept
-#ifdef _MSC_VER
+#if defined(_MSC_VER) && _MSC_VER < 1900
     #define YAML_CPP_NOEXCEPT _NOEXCEPT
 #else
     #define YAML_CPP_NOEXCEPT noexcept
@@ -114,6 +114,35 @@ inline const std::string KEY_NOT_FOUND_WITH_KEY(
   stream << KEY_NOT_FOUND << ": " << key;
   return stream.str();
 }
+
+template <typename T>
+inline const std::string BAD_SUBSCRIPT_WITH_KEY(
+    const T&, typename disable_if<is_numeric<T>>::type* = nullptr) {
+  return BAD_SUBSCRIPT;
+}
+
+inline const std::string BAD_SUBSCRIPT_WITH_KEY(const std::string& key) {
+  std::stringstream stream;
+  stream << BAD_SUBSCRIPT << " (key: \"" << key << "\")";
+  return stream.str();
+}
+
+template <typename T>
+inline const std::string BAD_SUBSCRIPT_WITH_KEY(
+    const T& key, typename enable_if<is_numeric<T>>::type* = nullptr) {
+  std::stringstream stream;
+  stream << BAD_SUBSCRIPT << " (key: \"" << key << "\")";
+  return stream.str();
+}
+
+inline const std::string INVALID_NODE_WITH_KEY(const std::string& key) {
+  std::stringstream stream;
+  if (key.empty()) {
+    return INVALID_NODE;
+  }
+  stream << "invalid node; first invalid key: \"" << key << "\"";
+  return stream.str();
+}
 }
 
 class YAML_CPP_API Exception : public std::runtime_error {
@@ -131,7 +160,7 @@ class YAML_CPP_API Exception : public std::runtime_error {
   static const std::string build_what(const Mark& mark,
                                       const std::string& msg) {
     if (mark.is_null()) {
-      return msg.c_str();
+      return msg;
     }
 
     std::stringstream output;
@@ -194,8 +223,9 @@ inline TypedKeyNotFound<T> MakeTypedKeyNotFound(const Mark& mark,
 
 class YAML_CPP_API InvalidNode : public RepresentationException {
  public:
-  InvalidNode()
-      : RepresentationException(Mark::null_mark(), ErrorMsg::INVALID_NODE) {}
+  InvalidNode(std::string key)
+      : RepresentationException(Mark::null_mark(),
+                                ErrorMsg::INVALID_NODE_WITH_KEY(key)) {}
   InvalidNode(const InvalidNode&) = default;
   virtual ~InvalidNode() YAML_CPP_NOEXCEPT;
 };
@@ -224,8 +254,10 @@ class YAML_CPP_API BadDereference : public RepresentationException {
 
 class YAML_CPP_API BadSubscript : public RepresentationException {
  public:
-  BadSubscript()
-      : RepresentationException(Mark::null_mark(), ErrorMsg::BAD_SUBSCRIPT) {}
+  template <typename Key>
+  BadSubscript(const Key& key)
+      : RepresentationException(Mark::null_mark(),
+                                ErrorMsg::BAD_SUBSCRIPT_WITH_KEY(key)) {}
   BadSubscript(const BadSubscript&) = default;
   virtual ~BadSubscript() YAML_CPP_NOEXCEPT;
 };
diff --git a/lib/yamlcpp/include/yaml-cpp/node/convert.h b/lib/yamlcpp/include/yaml-cpp/node/convert.h
index 45a878a..d61b73d 100644
--- a/lib/yamlcpp/include/yaml-cpp/node/convert.h
+++ b/lib/yamlcpp/include/yaml-cpp/node/convert.h
@@ -93,7 +93,7 @@ struct convert<_Null> {
   struct convert<type> {                                                 \
     static Node encode(const type& rhs) {                                \
       std::stringstream stream;                                          \
-      stream.precision(std::numeric_limits<type>::digits10 + 1);         \
+      stream.precision(std::numeric_limits<type>::max_digits10);         \
       stream << rhs;                                                     \
       return Node(stream.str());                                         \
     }                                                                    \
@@ -116,10 +116,11 @@ struct convert<_Null> {
         }                                                                \
       }                                                                  \
                                                                          \
-      if (std::numeric_limits<type>::has_quiet_NaN &&                    \
-          conversion::IsNaN(input)) {                                    \
-        rhs = std::numeric_limits<type>::quiet_NaN();                    \
-        return true;                                                     \
+      if (std::numeric_limits<type>::has_quiet_NaN) {                    \
+        if (conversion::IsNaN(input)) {                                  \
+          rhs = std::numeric_limits<type>::quiet_NaN();                  \
+          return true;                                                   \
+        }                                                                \
       }                                                                  \
                                                                          \
       return false;                                                      \
diff --git a/lib/yamlcpp/include/yaml-cpp/node/detail/impl.h b/lib/yamlcpp/include/yaml-cpp/node/detail/impl.h
index 09e55f8..4123b85 100644
--- a/lib/yamlcpp/include/yaml-cpp/node/detail/impl.h
+++ b/lib/yamlcpp/include/yaml-cpp/node/detail/impl.h
@@ -17,7 +17,7 @@ template <typename Key, typename Enable = void>
 struct get_idx {
   static node* get(const std::vector<node*>& /* sequence */,
                    const Key& /* key */, shared_memory_holder /* pMemory */) {
-    return 0;
+    return nullptr;
   }
 };
 
@@ -27,12 +27,12 @@ struct get_idx<Key,
                                        !std::is_same<Key, bool>::value>::type> {
   static node* get(const std::vector<node*>& sequence, const Key& key,
                    shared_memory_holder /* pMemory */) {
-    return key < sequence.size() ? sequence[key] : 0;
+    return key < sequence.size() ? sequence[key] : nullptr;
   }
 
   static node* get(std::vector<node*>& sequence, const Key& key,
                    shared_memory_holder pMemory) {
-   if (key > sequence.size() || (key > 0 && !sequence[key-1]->is_defined()))
+    if (key > sequence.size() || (key > 0 && !sequence[key - 1]->is_defined()))
       return 0;
     if (key == sequence.size())
       sequence.push_back(&pMemory->create_node());
@@ -46,13 +46,44 @@ struct get_idx<Key, typename std::enable_if<std::is_signed<Key>::value>::type> {
                    shared_memory_holder pMemory) {
     return key >= 0 ? get_idx<std::size_t>::get(
                           sequence, static_cast<std::size_t>(key), pMemory)
-                    : 0;
+                    : nullptr;
   }
   static node* get(std::vector<node*>& sequence, const Key& key,
                    shared_memory_holder pMemory) {
     return key >= 0 ? get_idx<std::size_t>::get(
                           sequence, static_cast<std::size_t>(key), pMemory)
-                    : 0;
+                    : nullptr;
+  }
+};
+
+template <typename Key, typename Enable = void>
+struct remove_idx {
+  static bool remove(std::vector<node*>&, const Key&) { return false; }
+};
+
+template <typename Key>
+struct remove_idx<
+    Key, typename std::enable_if<std::is_unsigned<Key>::value &&
+                                 !std::is_same<Key, bool>::value>::type> {
+
+  static bool remove(std::vector<node*>& sequence, const Key& key) {
+    if (key >= sequence.size()) {
+      return false;
+    } else {
+      sequence.erase(sequence.begin() + key);
+      return true;
+    }
+  }
+};
+
+template <typename Key>
+struct remove_idx<Key,
+                  typename std::enable_if<std::is_signed<Key>::value>::type> {
+
+  static bool remove(std::vector<node*>& sequence, const Key& key) {
+    return key >= 0 ? remove_idx<std::size_t>::remove(
+                          sequence, static_cast<std::size_t>(key))
+                    : false;
   }
 };
 
@@ -78,13 +109,13 @@ inline node* node_data::get(const Key& key,
       break;
     case NodeType::Undefined:
     case NodeType::Null:
-      return NULL;
+      return nullptr;
     case NodeType::Sequence:
       if (node* pNode = get_idx<Key>::get(m_sequence, key, pMemory))
         return pNode;
-      return NULL;
+      return nullptr;
     case NodeType::Scalar:
-      throw BadSubscript();
+      throw BadSubscript(key);
   }
 
   for (node_map::const_iterator it = m_map.begin(); it != m_map.end(); ++it) {
@@ -93,7 +124,7 @@ inline node* node_data::get(const Key& key,
     }
   }
 
-  return NULL;
+  return nullptr;
 }
 
 template <typename Key>
@@ -112,7 +143,7 @@ inline node& node_data::get(const Key& key, shared_memory_holder pMemory) {
       convert_to_map(pMemory);
       break;
     case NodeType::Scalar:
-      throw BadSubscript();
+      throw BadSubscript(key);
   }
 
   for (node_map::const_iterator it = m_map.begin(); it != m_map.end(); ++it) {
@@ -129,21 +160,23 @@ inline node& node_data::get(const Key& key, shared_memory_holder pMemory) {
 
 template <typename Key>
 inline bool node_data::remove(const Key& key, shared_memory_holder pMemory) {
-  if (m_type != NodeType::Map)
-    return false;
-
-  for (kv_pairs::iterator it = m_undefinedPairs.begin();
-       it != m_undefinedPairs.end();) {
-    kv_pairs::iterator jt = std::next(it);
-    if (it->first->equals(key, pMemory))
-      m_undefinedPairs.erase(it);
-    it = jt;
-  }
+  if (m_type == NodeType::Sequence) {
+    return remove_idx<Key>::remove(m_sequence, key);
+  } else if (m_type == NodeType::Map) {
+    kv_pairs::iterator it = m_undefinedPairs.begin();
+    while (it != m_undefinedPairs.end()) {
+      kv_pairs::iterator jt = std::next(it);
+      if (it->first->equals(key, pMemory)) {
+        m_undefinedPairs.erase(it);
+      }
+      it = jt;
+    }
 
-  for (node_map::iterator it = m_map.begin(); it != m_map.end(); ++it) {
-    if (it->first->equals(key, pMemory)) {
-      m_map.erase(it);
-      return true;
+    for (node_map::iterator iter = m_map.begin(); iter != m_map.end(); ++iter) {
+      if (iter->first->equals(key, pMemory)) {
+        m_map.erase(iter);
+        return true;
+      }
     }
   }
 
diff --git a/lib/yamlcpp/include/yaml-cpp/node/detail/iterator.h b/lib/yamlcpp/include/yaml-cpp/node/detail/iterator.h
index deec8fb..966107d 100644
--- a/lib/yamlcpp/include/yaml-cpp/node/detail/iterator.h
+++ b/lib/yamlcpp/include/yaml-cpp/node/detail/iterator.h
@@ -8,19 +8,19 @@
 #endif
 
 #include "yaml-cpp/dll.h"
+#include "yaml-cpp/node/detail/node_iterator.h"
 #include "yaml-cpp/node/node.h"
 #include "yaml-cpp/node/ptr.h"
-#include "yaml-cpp/node/detail/node_iterator.h"
 #include <cstddef>
 #include <iterator>
 
+
 namespace YAML {
 namespace detail {
 struct iterator_value;
 
 template <typename V>
-class iterator_base : public std::iterator<std::forward_iterator_tag, V,
-                                           std::ptrdiff_t, V*, V> {
+class iterator_base {
 
  private:
   template <typename>
@@ -37,7 +37,11 @@ class iterator_base : public std::iterator<std::forward_iterator_tag, V,
   };
 
  public:
-  typedef typename iterator_base::value_type value_type;
+  using iterator_category = std::forward_iterator_tag;
+  using value_type = V;
+  using difference_type = std::ptrdiff_t;
+  using pointer = V*;
+  using reference = V;
 
  public:
   iterator_base() : m_iterator(), m_pMemory() {}
@@ -86,7 +90,7 @@ class iterator_base : public std::iterator<std::forward_iterator_tag, V,
   base_type m_iterator;
   shared_memory_holder m_pMemory;
 };
-}
-}
+}  // namespace detail
+}  // namespace YAML
 
 #endif  // VALUE_DETAIL_ITERATOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/node/detail/memory.h b/lib/yamlcpp/include/yaml-cpp/node/detail/memory.h
index 8f2bc26..a4df0f7 100644
--- a/lib/yamlcpp/include/yaml-cpp/node/detail/memory.h
+++ b/lib/yamlcpp/include/yaml-cpp/node/detail/memory.h
@@ -22,6 +22,7 @@ namespace YAML {
 namespace detail {
 class YAML_CPP_API memory {
  public:
+  memory() : m_nodes{} {}
   node& create_node();
   void merge(const memory& rhs);
 
@@ -40,7 +41,7 @@ class YAML_CPP_API memory_holder {
  private:
   shared_memory m_pMemory;
 };
-}
-}
+}  // namespace detail
+}  // namespace YAML
 
 #endif  // VALUE_DETAIL_MEMORY_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/node/detail/node.h b/lib/yamlcpp/include/yaml-cpp/node/detail/node.h
index 8a776f6..a2cc52b 100644
--- a/lib/yamlcpp/include/yaml-cpp/node/detail/node.h
+++ b/lib/yamlcpp/include/yaml-cpp/node/detail/node.h
@@ -7,18 +7,18 @@
 #pragma once
 #endif
 
-#include "yaml-cpp/emitterstyle.h"
 #include "yaml-cpp/dll.h"
-#include "yaml-cpp/node/type.h"
-#include "yaml-cpp/node/ptr.h"
+#include "yaml-cpp/emitterstyle.h"
 #include "yaml-cpp/node/detail/node_ref.h"
+#include "yaml-cpp/node/ptr.h"
+#include "yaml-cpp/node/type.h"
 #include <set>
 
 namespace YAML {
 namespace detail {
 class node {
  public:
-  node() : m_pRef(new node_ref) {}
+  node() : m_pRef(new node_ref), m_dependencies{} {}
   node(const node&) = delete;
   node& operator=(const node&) = delete;
 
@@ -163,7 +163,7 @@ class node {
   typedef std::set<node*> nodes;
   nodes m_dependencies;
 };
-}
-}
+}  // namespace detail
+}  // namespace YAML
 
 #endif  // NODE_DETAIL_NODE_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/node/detail/node_data.h b/lib/yamlcpp/include/yaml-cpp/node/detail/node_data.h
index 50bcd74..82fb79a 100644
--- a/lib/yamlcpp/include/yaml-cpp/node/detail/node_data.h
+++ b/lib/yamlcpp/include/yaml-cpp/node/detail/node_data.h
@@ -81,7 +81,7 @@ class YAML_CPP_API node_data {
                     shared_memory_holder pMemory);
 
  public:
-  static std::string empty_scalar;
+  static const std::string& empty_scalar();
 
  private:
   void compute_seq_size() const;
diff --git a/lib/yamlcpp/include/yaml-cpp/node/detail/node_iterator.h b/lib/yamlcpp/include/yaml-cpp/node/detail/node_iterator.h
index 088090f..ab6916f 100644
--- a/lib/yamlcpp/include/yaml-cpp/node/detail/node_iterator.h
+++ b/lib/yamlcpp/include/yaml-cpp/node/detail/node_iterator.h
@@ -26,9 +26,9 @@ template <typename V>
 struct node_iterator_value : public std::pair<V*, V*> {
   typedef std::pair<V*, V*> kv;
 
-  node_iterator_value() : kv(), pNode(0) {}
+  node_iterator_value() : kv(), pNode(nullptr) {}
   explicit node_iterator_value(V& rhs) : kv(), pNode(&rhs) {}
-  explicit node_iterator_value(V& key, V& value) : kv(&key, &value), pNode(0) {}
+  explicit node_iterator_value(V& key, V& value) : kv(&key, &value), pNode(nullptr) {}
 
   V& operator*() const { return *pNode; }
   V& operator->() const { return *pNode; }
diff --git a/lib/yamlcpp/include/yaml-cpp/node/impl.h b/lib/yamlcpp/include/yaml-cpp/node/impl.h
index 20c487a..7a3deac 100644
--- a/lib/yamlcpp/include/yaml-cpp/node/impl.h
+++ b/lib/yamlcpp/include/yaml-cpp/node/impl.h
@@ -7,18 +7,21 @@
 #pragma once
 #endif
 
-#include "yaml-cpp/node/node.h"
-#include "yaml-cpp/node/iterator.h"
+#include "yaml-cpp/exceptions.h"
 #include "yaml-cpp/node/detail/memory.h"
 #include "yaml-cpp/node/detail/node.h"
-#include "yaml-cpp/exceptions.h"
+#include "yaml-cpp/node/iterator.h"
+#include "yaml-cpp/node/node.h"
+#include <sstream>
 #include <string>
 
 namespace YAML {
-inline Node::Node() : m_isValid(true), m_pNode(NULL) {}
+inline Node::Node()
+    : m_isValid(true), m_invalidKey{}, m_pMemory(nullptr), m_pNode(nullptr) {}
 
 inline Node::Node(NodeType::value type)
     : m_isValid(true),
+      m_invalidKey{},
       m_pMemory(new detail::memory_holder),
       m_pNode(&m_pMemory->create_node()) {
   m_pNode->set_type(type);
@@ -27,6 +30,7 @@ inline Node::Node(NodeType::value type)
 template <typename T>
 inline Node::Node(const T& rhs)
     : m_isValid(true),
+      m_invalidKey{},
       m_pMemory(new detail::memory_holder),
       m_pNode(&m_pMemory->create_node()) {
   Assign(rhs);
@@ -34,24 +38,30 @@ inline Node::Node(const T& rhs)
 
 inline Node::Node(const detail::iterator_value& rhs)
     : m_isValid(rhs.m_isValid),
+      m_invalidKey(rhs.m_invalidKey),
       m_pMemory(rhs.m_pMemory),
       m_pNode(rhs.m_pNode) {}
 
 inline Node::Node(const Node& rhs)
     : m_isValid(rhs.m_isValid),
+      m_invalidKey(rhs.m_invalidKey),
       m_pMemory(rhs.m_pMemory),
       m_pNode(rhs.m_pNode) {}
 
-inline Node::Node(Zombie) : m_isValid(false), m_pNode(NULL) {}
+inline Node::Node(Zombie)
+    : m_isValid(false), m_invalidKey{}, m_pMemory{}, m_pNode(nullptr) {}
+
+inline Node::Node(Zombie, const std::string& key)
+    : m_isValid(false), m_invalidKey(key), m_pMemory{}, m_pNode(nullptr) {}
 
 inline Node::Node(detail::node& node, detail::shared_memory_holder pMemory)
-    : m_isValid(true), m_pMemory(pMemory), m_pNode(&node) {}
+    : m_isValid(true), m_invalidKey{}, m_pMemory(pMemory), m_pNode(&node) {}
 
 inline Node::~Node() {}
 
 inline void Node::EnsureNodeExists() const {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   if (!m_pNode) {
     m_pMemory.reset(new detail::memory_holder);
     m_pNode = &m_pMemory->create_node();
@@ -68,14 +78,14 @@ inline bool Node::IsDefined() const {
 
 inline Mark Node::Mark() const {
   if (!m_isValid) {
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   }
   return m_pNode ? m_pNode->mark() : Mark::null_mark();
 }
 
 inline NodeType::value Node::Type() const {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   return m_pNode ? m_pNode->type() : NodeType::Null;
 }
 
@@ -142,7 +152,7 @@ struct as_if<std::string, void> {
 template <typename T>
 inline T Node::as() const {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   return as_if<T, void>(*this)();
 }
 
@@ -155,32 +165,32 @@ inline T Node::as(const S& fallback) const {
 
 inline const std::string& Node::Scalar() const {
   if (!m_isValid)
-    throw InvalidNode();
-  return m_pNode ? m_pNode->scalar() : detail::node_data::empty_scalar;
+    throw InvalidNode(m_invalidKey);
+  return m_pNode ? m_pNode->scalar() : detail::node_data::empty_scalar();
 }
 
 inline const std::string& Node::Tag() const {
   if (!m_isValid)
-    throw InvalidNode();
-  return m_pNode ? m_pNode->tag() : detail::node_data::empty_scalar;
+    throw InvalidNode(m_invalidKey);
+  return m_pNode ? m_pNode->tag() : detail::node_data::empty_scalar();
 }
 
 inline void Node::SetTag(const std::string& tag) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   m_pNode->set_tag(tag);
 }
 
 inline EmitterStyle::value Node::Style() const {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   return m_pNode ? m_pNode->style() : EmitterStyle::Default;
 }
 
 inline void Node::SetStyle(EmitterStyle::value style) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   m_pNode->set_style(style);
 }
@@ -188,7 +198,7 @@ inline void Node::SetStyle(EmitterStyle::value style) {
 // assignment
 inline bool Node::is(const Node& rhs) const {
   if (!m_isValid || !rhs.m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   if (!m_pNode || !rhs.m_pNode)
     return false;
   return m_pNode->is(*rhs.m_pNode);
@@ -197,14 +207,23 @@ inline bool Node::is(const Node& rhs) const {
 template <typename T>
 inline Node& Node::operator=(const T& rhs) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   Assign(rhs);
   return *this;
 }
 
+inline Node& Node::operator=(const Node& rhs) {
+  if (!m_isValid || !rhs.m_isValid)
+    throw InvalidNode(m_invalidKey);
+  if (is(rhs))
+    return *this;
+  AssignNode(rhs);
+  return *this;
+}
+
 inline void Node::reset(const YAML::Node& rhs) {
   if (!m_isValid || !rhs.m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   m_pMemory = rhs.m_pMemory;
   m_pNode = rhs.m_pNode;
 }
@@ -212,44 +231,35 @@ inline void Node::reset(const YAML::Node& rhs) {
 template <typename T>
 inline void Node::Assign(const T& rhs) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   AssignData(convert<T>::encode(rhs));
 }
 
 template <>
 inline void Node::Assign(const std::string& rhs) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   m_pNode->set_scalar(rhs);
 }
 
 inline void Node::Assign(const char* rhs) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   m_pNode->set_scalar(rhs);
 }
 
 inline void Node::Assign(char* rhs) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   m_pNode->set_scalar(rhs);
 }
 
-inline Node& Node::operator=(const Node& rhs) {
-  if (!m_isValid || !rhs.m_isValid)
-    throw InvalidNode();
-  if (is(rhs))
-    return *this;
-  AssignNode(rhs);
-  return *this;
-}
-
 inline void Node::AssignData(const Node& rhs) {
   if (!m_isValid || !rhs.m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   rhs.EnsureNodeExists();
 
@@ -259,7 +269,7 @@ inline void Node::AssignData(const Node& rhs) {
 
 inline void Node::AssignNode(const Node& rhs) {
   if (!m_isValid || !rhs.m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   rhs.EnsureNodeExists();
 
   if (!m_pNode) {
@@ -276,7 +286,7 @@ inline void Node::AssignNode(const Node& rhs) {
 // size/iterator
 inline std::size_t Node::size() const {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   return m_pNode ? m_pNode->size() : 0;
 }
 
@@ -309,13 +319,13 @@ inline iterator Node::end() {
 template <typename T>
 inline void Node::push_back(const T& rhs) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   push_back(Node(rhs));
 }
 
 inline void Node::push_back(const Node& rhs) {
   if (!m_isValid || !rhs.m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   rhs.EnsureNodeExists();
 
@@ -366,18 +376,23 @@ template <typename T>
 inline typename to_value_t<T>::return_type to_value(const T& t) {
   return to_value_t<T>(t)();
 }
+}  // namespace detail
+
+template<typename Key>
+std::string key_to_string(const Key& key) {
+  return streamable_to_string<Key, is_streamable<std::stringstream, Key>::value>().impl(key);
 }
 
 // indexing
 template <typename Key>
 inline const Node Node::operator[](const Key& key) const {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
-  detail::node* value = static_cast<const detail::node&>(*m_pNode)
-                            .get(detail::to_value(key), m_pMemory);
+  detail::node* value = static_cast<const detail::node&>(*m_pNode).get(
+      detail::to_value(key), m_pMemory);
   if (!value) {
-    return Node(ZombieNode);
+    return Node(ZombieNode, key_to_string(key));
   }
   return Node(*value, m_pMemory);
 }
@@ -385,7 +400,7 @@ inline const Node Node::operator[](const Key& key) const {
 template <typename Key>
 inline Node Node::operator[](const Key& key) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   detail::node& value = m_pNode->get(detail::to_value(key), m_pMemory);
   return Node(value, m_pMemory);
@@ -394,28 +409,28 @@ inline Node Node::operator[](const Key& key) {
 template <typename Key>
 inline bool Node::remove(const Key& key) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   return m_pNode->remove(detail::to_value(key), m_pMemory);
 }
 
 inline const Node Node::operator[](const Node& key) const {
   if (!m_isValid || !key.m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   key.EnsureNodeExists();
   m_pMemory->merge(*key.m_pMemory);
   detail::node* value =
       static_cast<const detail::node&>(*m_pNode).get(*key.m_pNode, m_pMemory);
   if (!value) {
-    return Node(ZombieNode);
+    return Node(ZombieNode, key_to_string(key));
   }
   return Node(*value, m_pMemory);
 }
 
 inline Node Node::operator[](const Node& key) {
   if (!m_isValid || !key.m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   key.EnsureNodeExists();
   m_pMemory->merge(*key.m_pMemory);
@@ -425,7 +440,7 @@ inline Node Node::operator[](const Node& key) {
 
 inline bool Node::remove(const Node& key) {
   if (!m_isValid || !key.m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   key.EnsureNodeExists();
   return m_pNode->remove(*key.m_pNode, m_pMemory);
@@ -435,7 +450,7 @@ inline bool Node::remove(const Node& key) {
 template <typename Key, typename Value>
 inline void Node::force_insert(const Key& key, const Value& value) {
   if (!m_isValid)
-    throw InvalidNode();
+    throw InvalidNode(m_invalidKey);
   EnsureNodeExists();
   m_pNode->force_insert(detail::to_value(key), detail::to_value(value),
                         m_pMemory);
@@ -443,6 +458,6 @@ inline void Node::force_insert(const Key& key, const Value& value) {
 
 // free functions
 inline bool operator==(const Node& lhs, const Node& rhs) { return lhs.is(rhs); }
-}
+}  // namespace YAML
 
 #endif  // NODE_IMPL_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/node/node.h b/lib/yamlcpp/include/yaml-cpp/node/node.h
index 1ded7d2..49af58e 100644
--- a/lib/yamlcpp/include/yaml-cpp/node/node.h
+++ b/lib/yamlcpp/include/yaml-cpp/node/node.h
@@ -8,6 +8,7 @@
 #endif
 
 #include <stdexcept>
+#include <string>
 
 #include "yaml-cpp/dll.h"
 #include "yaml-cpp/emitterstyle.h"
@@ -116,6 +117,7 @@ class YAML_CPP_API Node {
  private:
   enum Zombie { ZombieNode };
   explicit Node(Zombie);
+  explicit Node(Zombie, const std::string&);
   explicit Node(detail::node& node, detail::shared_memory_holder pMemory);
 
   void EnsureNodeExists() const;
@@ -130,6 +132,8 @@ class YAML_CPP_API Node {
 
  private:
   bool m_isValid;
+  // String representation of invalid key, if the node is invalid.
+  std::string m_invalidKey;
   mutable detail::shared_memory_holder m_pMemory;
   mutable detail::node* m_pNode;
 };
diff --git a/lib/yamlcpp/include/yaml-cpp/noncopyable.h b/lib/yamlcpp/include/yaml-cpp/noncopyable.h
deleted file mode 100644
index a261040..0000000
--- a/lib/yamlcpp/include/yaml-cpp/noncopyable.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef NONCOPYABLE_H_62B23520_7C8E_11DE_8A39_0800200C9A66
-#define NONCOPYABLE_H_62B23520_7C8E_11DE_8A39_0800200C9A66
-
-#if defined(_MSC_VER) ||                                            \
-    (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
-     (__GNUC__ >= 4))  // GCC supports "pragma once" correctly since 3.4
-#pragma once
-#endif
-
-#include "yaml-cpp/dll.h"
-
-namespace YAML {
-// this is basically boost::noncopyable
-class YAML_CPP_API noncopyable {
- protected:
-  noncopyable() {}
-  ~noncopyable() {}
-
- private:
-  noncopyable(const noncopyable&);
-  const noncopyable& operator=(const noncopyable&);
-};
-}
-
-#endif  // NONCOPYABLE_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/ostream_wrapper.h b/lib/yamlcpp/include/yaml-cpp/ostream_wrapper.h
index 09d45f3..cf89741 100644
--- a/lib/yamlcpp/include/yaml-cpp/ostream_wrapper.h
+++ b/lib/yamlcpp/include/yaml-cpp/ostream_wrapper.h
@@ -17,6 +17,10 @@ class YAML_CPP_API ostream_wrapper {
  public:
   ostream_wrapper();
   explicit ostream_wrapper(std::ostream& stream);
+  ostream_wrapper(const ostream_wrapper&) = delete;
+  ostream_wrapper(ostream_wrapper&&) = delete;
+  ostream_wrapper& operator=(const ostream_wrapper&) = delete;
+  ostream_wrapper& operator=(ostream_wrapper&&) = delete;
   ~ostream_wrapper();
 
   void write(const std::string& str);
@@ -26,7 +30,7 @@ class YAML_CPP_API ostream_wrapper {
 
   const char* str() const {
     if (m_pStream) {
-      return 0;
+      return nullptr;
     } else {
       m_buffer[m_pos] = '\0';
       return &m_buffer[0];
@@ -52,7 +56,7 @@ class YAML_CPP_API ostream_wrapper {
 
 template <std::size_t N>
 inline ostream_wrapper& operator<<(ostream_wrapper& stream,
-                                   const char(&str)[N]) {
+                                   const char (&str)[N]) {
   stream.write(str, N - 1);
   return stream;
 }
@@ -67,6 +71,6 @@ inline ostream_wrapper& operator<<(ostream_wrapper& stream, char ch) {
   stream.write(&ch, 1);
   return stream;
 }
-}
+}  // namespace YAML
 
 #endif  // OSTREAM_WRAPPER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/parser.h b/lib/yamlcpp/include/yaml-cpp/parser.h
index ceac22d..2f403c3 100644
--- a/lib/yamlcpp/include/yaml-cpp/parser.h
+++ b/lib/yamlcpp/include/yaml-cpp/parser.h
@@ -11,7 +11,6 @@
 #include <memory>
 
 #include "yaml-cpp/dll.h"
-#include "yaml-cpp/noncopyable.h"
 
 namespace YAML {
 class EventHandler;
@@ -24,11 +23,16 @@ struct Token;
  * A parser turns a stream of bytes into one stream of "events" per YAML
  * document in the input stream.
  */
-class YAML_CPP_API Parser : private noncopyable {
+class YAML_CPP_API Parser {
  public:
   /** Constructs an empty parser (with no input. */
   Parser();
 
+  Parser(const Parser&) = delete;
+  Parser(Parser&&) = delete;
+  Parser& operator=(const Parser&) = delete;
+  Parser& operator=(Parser&&) = delete;
+
   /**
    * Constructs a parser from the given input stream. The input stream must
    * live as long as the parser.
@@ -81,6 +85,6 @@ class YAML_CPP_API Parser : private noncopyable {
   std::unique_ptr<Scanner> m_pScanner;
   std::unique_ptr<Directives> m_pDirectives;
 };
-}
+}  // namespace YAML
 
 #endif  // PARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/include/yaml-cpp/traits.h b/lib/yamlcpp/include/yaml-cpp/traits.h
index f33d0e1..36d406b 100644
--- a/lib/yamlcpp/include/yaml-cpp/traits.h
+++ b/lib/yamlcpp/include/yaml-cpp/traits.h
@@ -7,6 +7,11 @@
 #pragma once
 #endif
 
+#include <type_traits>
+#include <utility>
+#include <string>
+#include <sstream>
+
 namespace YAML {
 template <typename>
 struct is_numeric {
@@ -100,4 +105,31 @@ template <class Cond, class T = void>
 struct disable_if : public disable_if_c<Cond::value, T> {};
 }
 
+template <typename S, typename T>
+struct is_streamable {
+  template <typename SS, typename TT>
+  static auto test(int)
+      -> decltype(std::declval<SS&>() << std::declval<TT>(), std::true_type());
+
+  template <typename, typename>
+  static auto test(...) -> std::false_type;
+
+  static const bool value = decltype(test<S, T>(0))::value;
+};
+
+template<typename Key, bool Streamable>
+struct streamable_to_string {
+  static std::string impl(const Key& key) {
+    std::stringstream ss;
+    ss << key;
+    return ss.str();
+  }
+};
+
+template<typename Key>
+struct streamable_to_string<Key, false> {
+  static std::string impl(const Key&) {
+    return "";
+  }
+};
 #endif  // TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/binary.cpp b/lib/yamlcpp/src/binary.cpp
index a7e5130..4db6d0b 100644
--- a/lib/yamlcpp/src/binary.cpp
+++ b/lib/yamlcpp/src/binary.cpp
@@ -1,5 +1,7 @@
 #include "yaml-cpp/binary.h"
 
+#include <cctype>
+
 namespace YAML {
 static const char encoding[] =
     "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@@ -72,19 +74,24 @@ std::vector<unsigned char> DecodeBase64(const std::string &input) {
   unsigned char *out = &ret[0];
 
   unsigned value = 0;
-  for (std::size_t i = 0; i < input.size(); i++) {
+  for (std::size_t i = 0, cnt = 0; i < input.size(); i++) {
+    if (std::isspace(input[i])) {
+      // skip newlines
+      continue;
+    }
     unsigned char d = decoding[static_cast<unsigned>(input[i])];
     if (d == 255)
       return ret_type();
 
     value = (value << 6) | d;
-    if (i % 4 == 3) {
+    if (cnt % 4 == 3) {
       *out++ = value >> 16;
       if (i > 0 && input[i - 1] != '=')
         *out++ = value >> 8;
       if (input[i] != '=')
         *out++ = value;
     }
+    ++cnt;
   }
 
   ret.resize(out - &ret[0]);
diff --git a/lib/yamlcpp/src/collectionstack.h b/lib/yamlcpp/src/collectionstack.h
index 2302786..9feba96 100644
--- a/lib/yamlcpp/src/collectionstack.h
+++ b/lib/yamlcpp/src/collectionstack.h
@@ -7,8 +7,8 @@
 #pragma once
 #endif
 
-#include <stack>
 #include <cassert>
+#include <stack>
 
 namespace YAML {
 struct CollectionType {
@@ -17,6 +17,7 @@ struct CollectionType {
 
 class CollectionStack {
  public:
+  CollectionStack() : collectionStack{} {}
   CollectionType::value GetCurCollectionType() const {
     if (collectionStack.empty())
       return CollectionType::NoCollection;
@@ -28,12 +29,13 @@ class CollectionStack {
   }
   void PopCollectionType(CollectionType::value type) {
     assert(type == GetCurCollectionType());
+    (void)type;
     collectionStack.pop();
   }
 
  private:
   std::stack<CollectionType::value> collectionStack;
 };
-}
+}  // namespace YAML
 
 #endif  // COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/contrib/graphbuilder.cpp b/lib/yamlcpp/src/contrib/graphbuilder.cpp
index 416c135..bf25162 100644
--- a/lib/yamlcpp/src/contrib/graphbuilder.cpp
+++ b/lib/yamlcpp/src/contrib/graphbuilder.cpp
@@ -11,7 +11,7 @@ void* BuildGraphOfNextDocument(Parser& parser,
   if (parser.HandleNextDocument(eventHandler)) {
     return eventHandler.RootNode();
   } else {
-    return NULL;
+    return nullptr;
   }
 }
 }
diff --git a/lib/yamlcpp/src/contrib/graphbuilderadapter.cpp b/lib/yamlcpp/src/contrib/graphbuilderadapter.cpp
index 02a3d97..b9e0b65 100644
--- a/lib/yamlcpp/src/contrib/graphbuilderadapter.cpp
+++ b/lib/yamlcpp/src/contrib/graphbuilderadapter.cpp
@@ -49,7 +49,7 @@ void GraphBuilderAdapter::OnMapStart(const Mark &mark, const std::string &tag,
                                      EmitterStyle::value /* style */) {
   void *pNode = m_builder.NewMap(mark, tag, GetCurrentParent());
   m_containers.push(ContainerFrame(pNode, m_pKeyNode));
-  m_pKeyNode = NULL;
+  m_pKeyNode = nullptr;
   RegisterAnchor(anchor, pNode);
 }
 
@@ -62,7 +62,7 @@ void GraphBuilderAdapter::OnMapEnd() {
 
 void *GraphBuilderAdapter::GetCurrentParent() const {
   if (m_containers.empty()) {
-    return NULL;
+    return nullptr;
   }
   return m_containers.top().pContainer;
 }
@@ -83,7 +83,7 @@ void GraphBuilderAdapter::DispositionNode(void *pNode) {
   if (m_containers.top().isMap()) {
     if (m_pKeyNode) {
       m_builder.AssignInMap(pContainer, m_pKeyNode, pNode);
-      m_pKeyNode = NULL;
+      m_pKeyNode = nullptr;
     } else {
       m_pKeyNode = pNode;
     }
diff --git a/lib/yamlcpp/src/contrib/graphbuilderadapter.h b/lib/yamlcpp/src/contrib/graphbuilderadapter.h
index 0d1e579..9078cdf 100644
--- a/lib/yamlcpp/src/contrib/graphbuilderadapter.h
+++ b/lib/yamlcpp/src/contrib/graphbuilderadapter.h
@@ -26,7 +26,15 @@ namespace YAML {
 class GraphBuilderAdapter : public EventHandler {
  public:
   GraphBuilderAdapter(GraphBuilderInterface& builder)
-      : m_builder(builder), m_pRootNode(NULL), m_pKeyNode(NULL) {}
+      : m_builder(builder),
+        m_containers{},
+        m_anchors{},
+        m_pRootNode(nullptr),
+        m_pKeyNode(nullptr) {}
+  GraphBuilderAdapter(const GraphBuilderAdapter&) = delete;
+  GraphBuilderAdapter(GraphBuilderAdapter&&) = delete;
+  GraphBuilderAdapter& operator=(const GraphBuilderAdapter&) = delete;
+  GraphBuilderAdapter& operator=(GraphBuilderAdapter&&) = delete;
 
   virtual void OnDocumentStart(const Mark& mark) { (void)mark; }
   virtual void OnDocumentEnd() {}
@@ -50,8 +58,8 @@ class GraphBuilderAdapter : public EventHandler {
   struct ContainerFrame {
     ContainerFrame(void* pSequence)
         : pContainer(pSequence), pPrevKeyNode(&sequenceMarker) {}
-    ContainerFrame(void* pMap, void* pPrevKeyNode)
-        : pContainer(pMap), pPrevKeyNode(pPrevKeyNode) {}
+    ContainerFrame(void* pMap, void* pPreviousKeyNode)
+        : pContainer(pMap), pPrevKeyNode(pPreviousKeyNode) {}
 
     void* pContainer;
     void* pPrevKeyNode;
@@ -74,6 +82,6 @@ class GraphBuilderAdapter : public EventHandler {
   void RegisterAnchor(anchor_t anchor, void* pNode);
   void DispositionNode(void* pNode);
 };
-}
+}  // namespace YAML
 
 #endif  // GRAPHBUILDERADAPTER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/contrib/yaml-cpp.natvis b/lib/yamlcpp/src/contrib/yaml-cpp.natvis
new file mode 100644
index 0000000..d5c222b
--- /dev/null
+++ b/lib/yamlcpp/src/contrib/yaml-cpp.natvis
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?> 
+<!-- MSVC Debugger visualization hints for YAML::Node and YAML::detail::node -->
+<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+  <Type Name="YAML::Node">
+    <DisplayString Condition="!m_isValid">{{invalid}}</DisplayString>
+    <DisplayString Condition="!m_pNode">{{pNode==nullptr}}</DisplayString>
+    <DisplayString>{{ {*m_pNode} }}</DisplayString>
+    <Expand>
+      <Item Condition="m_pNode->m_pRef._Ptr->m_pData._Ptr->m_type==YAML::NodeType::Scalar" Name="scalar">m_pNode->m_pRef._Ptr->m_pData._Ptr->m_scalar</Item>
+      <Item Condition="m_pNode->m_pRef._Ptr->m_pData._Ptr->m_type==YAML::NodeType::Sequence" Name="sequence">m_pNode->m_pRef._Ptr->m_pData._Ptr->m_sequence</Item>
+      <Item Condition="m_pNode->m_pRef._Ptr->m_pData._Ptr->m_type==YAML::NodeType::Map" Name="map">m_pNode->m_pRef._Ptr->m_pData._Ptr->m_map</Item>
+      <Item Name="[details]" >m_pNode->m_pRef._Ptr->m_pData._Ptr</Item>
+    </Expand>
+  </Type>
+
+  <Type Name="YAML::detail::node">
+    <DisplayString Condition="!m_pRef._Ptr">{{node:pRef==nullptr}}</DisplayString>
+    <DisplayString Condition="!m_pRef._Ptr->m_pData._Ptr">{{node:pRef->pData==nullptr}}</DisplayString>
+    <DisplayString Condition="!m_pRef._Ptr->m_pData._Ptr->m_isDefined">{{undefined}}</DisplayString>
+    <DisplayString Condition="m_pRef._Ptr->m_pData._Ptr->m_type==YAML::NodeType::Scalar">{{{m_pRef._Ptr->m_pData._Ptr->m_scalar}}}</DisplayString>
+    <DisplayString Condition="m_pRef._Ptr->m_pData._Ptr->m_type==YAML::NodeType::Map">{{ Map {m_pRef._Ptr->m_pData._Ptr->m_map}}}</DisplayString>
+    <DisplayString Condition="m_pRef._Ptr->m_pData._Ptr->m_type==YAML::NodeType::Sequence">{{ Seq {m_pRef._Ptr->m_pData._Ptr->m_sequence}}}</DisplayString>
+    <DisplayString>{{{m_pRef._Ptr->m_pData._Ptr->m_type}}}</DisplayString>
+    <Expand>
+      <Item Condition="m_pRef._Ptr->m_pData._Ptr->m_type==YAML::NodeType::Scalar" Name="scalar">m_pRef._Ptr->m_pData._Ptr->m_scalar</Item>
+      <Item Condition="m_pRef._Ptr->m_pData._Ptr->m_type==YAML::NodeType::Sequence" Name="sequence">m_pRef._Ptr->m_pData._Ptr->m_sequence</Item>
+      <Item Condition="m_pRef._Ptr->m_pData._Ptr->m_type==YAML::NodeType::Map" Name="map">m_pRef._Ptr->m_pData._Ptr->m_map</Item>
+      <Item Name="[details]" >m_pRef._Ptr->m_pData._Ptr</Item>
+    </Expand>
+  </Type>
+
+</AutoVisualizer>
diff --git a/lib/yamlcpp/src/contrib/yaml-cpp.natvis.md b/lib/yamlcpp/src/contrib/yaml-cpp.natvis.md
new file mode 100644
index 0000000..f1d68a8
--- /dev/null
+++ b/lib/yamlcpp/src/contrib/yaml-cpp.natvis.md
@@ -0,0 +1,9 @@
+# MSVC debugger visualizer for YAML::Node
+
+## How to use
+Add yaml-cpp.natvis to your Visual C++ project like any other source file.  It will be included in the debug information, and improve debugger display on YAML::Node and contained types. 
+
+## Compatibility and Troubleshooting
+
+This has been tested for MSVC 2017. It is expected to be compatible with VS 2015 and VS 2019. If you have any problems, you can open an issue here: https://github.com/peterchen-cp/yaml-cpp-natvis
+
diff --git a/lib/yamlcpp/src/directives.cpp b/lib/yamlcpp/src/directives.cpp
index 963bd2c..0c85d0f 100644
--- a/lib/yamlcpp/src/directives.cpp
+++ b/lib/yamlcpp/src/directives.cpp
@@ -1,12 +1,7 @@
 #include "directives.h"
 
 namespace YAML {
-Directives::Directives() {
-  // version
-  version.isDefault = true;
-  version.major = 1;
-  version.minor = 2;
-}
+Directives::Directives() : version{true, 1, 2}, tags{} {}
 
 const std::string Directives::TranslateTagHandle(
     const std::string& handle) const {
@@ -19,4 +14,4 @@ const std::string Directives::TranslateTagHandle(
 
   return it->second;
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/emitfromevents.cpp b/lib/yamlcpp/src/emitfromevents.cpp
index 4832649..5a51bb4 100644
--- a/lib/yamlcpp/src/emitfromevents.cpp
+++ b/lib/yamlcpp/src/emitfromevents.cpp
@@ -16,10 +16,11 @@ std::string ToString(YAML::anchor_t anchor) {
   stream << anchor;
   return stream.str();
 }
-}
+}  // namespace
 
 namespace YAML {
-EmitFromEvents::EmitFromEvents(Emitter& emitter) : m_emitter(emitter) {}
+EmitFromEvents::EmitFromEvents(Emitter& emitter)
+    : m_emitter(emitter), m_stateStack{} {}
 
 void EmitFromEvents::OnDocumentStart(const Mark&) {}
 
@@ -116,4 +117,4 @@ void EmitFromEvents::EmitProps(const std::string& tag, anchor_t anchor) {
   if (anchor)
     m_emitter << Anchor(ToString(anchor));
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/emitter.cpp b/lib/yamlcpp/src/emitter.cpp
index ebeb059..016beb1 100644
--- a/lib/yamlcpp/src/emitter.cpp
+++ b/lib/yamlcpp/src/emitter.cpp
@@ -11,7 +11,7 @@ namespace YAML {
 class Binary;
 struct _Null;
 
-Emitter::Emitter() : m_pState(new EmitterState) {}
+Emitter::Emitter() : m_pState(new EmitterState), m_stream{} {}
 
 Emitter::Emitter(std::ostream& stream)
     : m_pState(new EmitterState), m_stream(stream) {}
@@ -285,10 +285,8 @@ void Emitter::PrepareTopNode(EmitterNodeType::value child) {
   if (child == EmitterNodeType::NoType)
     return;
 
-  if (m_pState->CurGroupChildCount() > 0 && m_stream.col() > 0) {
-    if (child != EmitterNodeType::NoType)
-      EmitBeginDoc();
-  }
+  if (m_pState->CurGroupChildCount() > 0 && m_stream.col() > 0)
+    EmitBeginDoc();
 
   switch (child) {
     case EmitterNodeType::NoType:
@@ -908,4 +906,4 @@ Emitter& Emitter::Write(const Binary& binary) {
 
   return *this;
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/emitterstate.cpp b/lib/yamlcpp/src/emitterstate.cpp
index 3542aaf..890b4f0 100644
--- a/lib/yamlcpp/src/emitterstate.cpp
+++ b/lib/yamlcpp/src/emitterstate.cpp
@@ -6,27 +6,31 @@
 namespace YAML {
 EmitterState::EmitterState()
     : m_isGood(true),
+      m_lastError{},
+      // default global manipulators
+      m_charset(EmitNonAscii),
+      m_strFmt(Auto),
+      m_boolFmt(TrueFalseBool),
+      m_boolLengthFmt(LongBool),
+      m_boolCaseFmt(LowerCase),
+      m_intFmt(Dec),
+      m_indent(2),
+      m_preCommentIndent(2),
+      m_postCommentIndent(1),
+      m_seqFmt(Block),
+      m_mapFmt(Block),
+      m_mapKeyFmt(Auto),
+      m_floatPrecision(std::numeric_limits<float>::max_digits10),
+      m_doublePrecision(std::numeric_limits<double>::max_digits10),
+      //
+      m_modifiedSettings{},
+      m_globalModifiedSettings{},
+      m_groups{},
       m_curIndent(0),
       m_hasAnchor(false),
       m_hasTag(false),
       m_hasNonContent(false),
-      m_docCount(0) {
-  // set default global manipulators
-  m_charset.set(EmitNonAscii);
-  m_strFmt.set(Auto);
-  m_boolFmt.set(TrueFalseBool);
-  m_boolLengthFmt.set(LongBool);
-  m_boolCaseFmt.set(LowerCase);
-  m_intFmt.set(Dec);
-  m_indent.set(2);
-  m_preCommentIndent.set(2);
-  m_postCommentIndent.set(1);
-  m_seqFmt.set(Block);
-  m_mapFmt.set(Block);
-  m_mapKeyFmt.set(Auto);
-  m_floatPrecision.set(std::numeric_limits<float>::digits10 + 1);
-  m_doublePrecision.set(std::numeric_limits<double>::digits10 + 1);
-}
+      m_docCount(0) {}
 
 EmitterState::~EmitterState() {}
 
@@ -349,7 +353,7 @@ bool EmitterState::SetMapKeyFormat(EMITTER_MANIP value, FmtScope::value scope) {
 }
 
 bool EmitterState::SetFloatPrecision(std::size_t value, FmtScope::value scope) {
-  if (value > std::numeric_limits<float>::digits10 + 1)
+  if (value > std::numeric_limits<float>::max_digits10)
     return false;
   _Set(m_floatPrecision, value, scope);
   return true;
@@ -357,9 +361,9 @@ bool EmitterState::SetFloatPrecision(std::size_t value, FmtScope::value scope) {
 
 bool EmitterState::SetDoublePrecision(std::size_t value,
                                       FmtScope::value scope) {
-  if (value > std::numeric_limits<double>::digits10 + 1)
+  if (value > std::numeric_limits<double>::max_digits10)
     return false;
   _Set(m_doublePrecision, value, scope);
   return true;
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/emitterstate.h b/lib/yamlcpp/src/emitterstate.h
index 0937f00..75e2166 100644
--- a/lib/yamlcpp/src/emitterstate.h
+++ b/lib/yamlcpp/src/emitterstate.h
@@ -145,7 +145,12 @@ class EmitterState {
 
   struct Group {
     explicit Group(GroupType::value type_)
-        : type(type_), indent(0), childCount(0), longKey(false) {}
+        : type(type_),
+          flowType{},
+          indent(0),
+          childCount(0),
+          longKey(false),
+          modifiedSettings{} {}
 
     GroupType::value type;
     FlowType::value flowType;
@@ -198,6 +203,6 @@ void EmitterState::_Set(Setting<T>& fmt, T value, FmtScope::value scope) {
       assert(false);
   }
 }
-}
+}  // namespace YAML
 
 #endif  // EMITTERSTATE_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/emitterutils.cpp b/lib/yamlcpp/src/emitterutils.cpp
index 147738a..e348599 100644
--- a/lib/yamlcpp/src/emitterutils.cpp
+++ b/lib/yamlcpp/src/emitterutils.cpp
@@ -8,8 +8,8 @@
 #include "regeximpl.h"
 #include "stringsource.h"
 #include "yaml-cpp/binary.h"  // IWYU pragma: keep
-#include "yaml-cpp/ostream_wrapper.h"
 #include "yaml-cpp/null.h"
+#include "yaml-cpp/ostream_wrapper.h"
 
 namespace YAML {
 namespace Utils {
@@ -134,12 +134,12 @@ void WriteCodePoint(ostream_wrapper& out, int codePoint) {
   if (codePoint < 0 || codePoint > 0x10FFFF) {
     codePoint = REPLACEMENT_CHARACTER;
   }
-  if (codePoint < 0x7F) {
+  if (codePoint <= 0x7F) {
     out << static_cast<char>(codePoint);
-  } else if (codePoint < 0x7FF) {
+  } else if (codePoint <= 0x7FF) {
     out << static_cast<char>(0xC0 | (codePoint >> 6))
         << static_cast<char>(0x80 | (codePoint & 0x3F));
-  } else if (codePoint < 0xFFFF) {
+  } else if (codePoint <= 0xFFFF) {
     out << static_cast<char>(0xE0 | (codePoint >> 12))
         << static_cast<char>(0x80 | ((codePoint >> 6) & 0x3F))
         << static_cast<char>(0x80 | (codePoint & 0x3F));
@@ -173,12 +173,12 @@ bool IsValidPlainScalar(const std::string& str, FlowType::value flowType,
 
   // then check until something is disallowed
   static const RegEx& disallowed_flow =
-      Exp::EndScalarInFlow() || (Exp::BlankOrBreak() + Exp::Comment()) ||
-      Exp::NotPrintable() || Exp::Utf8_ByteOrderMark() || Exp::Break() ||
+      Exp::EndScalarInFlow() | (Exp::BlankOrBreak() + Exp::Comment()) |
+      Exp::NotPrintable() | Exp::Utf8_ByteOrderMark() | Exp::Break() |
       Exp::Tab();
   static const RegEx& disallowed_block =
-      Exp::EndScalar() || (Exp::BlankOrBreak() + Exp::Comment()) ||
-      Exp::NotPrintable() || Exp::Utf8_ByteOrderMark() || Exp::Break() ||
+      Exp::EndScalar() | (Exp::BlankOrBreak() + Exp::Comment()) |
+      Exp::NotPrintable() | Exp::Utf8_ByteOrderMark() | Exp::Break() |
       Exp::Tab();
   const RegEx& disallowed =
       flowType == FlowType::Flow ? disallowed_flow : disallowed_block;
@@ -258,7 +258,7 @@ bool WriteAliasName(ostream_wrapper& out, const std::string& str) {
   }
   return true;
 }
-}
+}  // namespace
 
 StringFormat::value ComputeStringFormat(const std::string& str,
                                         EMITTER_MANIP strFormat,
@@ -382,7 +382,7 @@ bool WriteChar(ostream_wrapper& out, char ch) {
     out << "\"\\b\"";
   } else if (ch == '\\') {
     out << "\"\\\\\"";
-  } else if ((0x20 <= ch && ch <= 0x7e) || ch == ' ') {
+  } else if (0x20 <= ch && ch <= 0x7e) {
     out << "\"" << ch << "\"";
   } else {
     out << "\"";
@@ -401,8 +401,8 @@ bool WriteComment(ostream_wrapper& out, const std::string& str,
   for (std::string::const_iterator i = str.begin();
        GetNextCodePointAndAdvance(codePoint, i, str.end());) {
     if (codePoint == '\n') {
-      out << "\n" << IndentTo(curIndent) << "#"
-          << Indentation(postCommentIndent);
+      out << "\n"
+          << IndentTo(curIndent) << "#" << Indentation(postCommentIndent);
       out.set_comment();
     } else {
       WriteCodePoint(out, codePoint);
@@ -479,5 +479,5 @@ bool WriteBinary(ostream_wrapper& out, const Binary& binary) {
                           false);
   return true;
 }
-}
-}
+}  // namespace Utils
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/exceptions.cpp b/lib/yamlcpp/src/exceptions.cpp
index 9b6d891..841549e 100644
--- a/lib/yamlcpp/src/exceptions.cpp
+++ b/lib/yamlcpp/src/exceptions.cpp
@@ -2,7 +2,7 @@
 
 // This is here for compatibility with older versions of Visual Studio
 // which don't support noexcept
-#ifdef _MSC_VER
+#if defined(_MSC_VER) && _MSC_VER < 1900
     #define YAML_CPP_NOEXCEPT _NOEXCEPT
 #else
     #define YAML_CPP_NOEXCEPT noexcept
diff --git a/lib/yamlcpp/src/exp.h b/lib/yamlcpp/src/exp.h
index 7c02cf6..fe36535 100644
--- a/lib/yamlcpp/src/exp.h
+++ b/lib/yamlcpp/src/exp.h
@@ -33,15 +33,15 @@ inline const RegEx& Tab() {
   return e;
 }
 inline const RegEx& Blank() {
-  static const RegEx e = Space() || Tab();
+  static const RegEx e = Space() | Tab();
   return e;
 }
 inline const RegEx& Break() {
-  static const RegEx e = RegEx('\n') || RegEx("\r\n");
+  static const RegEx e = RegEx('\n') | RegEx("\r\n");
   return e;
 }
 inline const RegEx& BlankOrBreak() {
-  static const RegEx e = Blank() || Break();
+  static const RegEx e = Blank() | Break();
   return e;
 }
 inline const RegEx& Digit() {
@@ -49,29 +49,29 @@ inline const RegEx& Digit() {
   return e;
 }
 inline const RegEx& Alpha() {
-  static const RegEx e = RegEx('a', 'z') || RegEx('A', 'Z');
+  static const RegEx e = RegEx('a', 'z') | RegEx('A', 'Z');
   return e;
 }
 inline const RegEx& AlphaNumeric() {
-  static const RegEx e = Alpha() || Digit();
+  static const RegEx e = Alpha() | Digit();
   return e;
 }
 inline const RegEx& Word() {
-  static const RegEx e = AlphaNumeric() || RegEx('-');
+  static const RegEx e = AlphaNumeric() | RegEx('-');
   return e;
 }
 inline const RegEx& Hex() {
-  static const RegEx e = Digit() || RegEx('A', 'F') || RegEx('a', 'f');
+  static const RegEx e = Digit() | RegEx('A', 'F') | RegEx('a', 'f');
   return e;
 }
 // Valid Unicode code points that are not part of c-printable (YAML 1.2, sec.
 // 5.1)
 inline const RegEx& NotPrintable() {
   static const RegEx e =
-      RegEx(0) ||
-      RegEx("\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x7F", REGEX_OR) ||
-      RegEx(0x0E, 0x1F) ||
-      (RegEx('\xC2') + (RegEx('\x80', '\x84') || RegEx('\x86', '\x9F')));
+      RegEx(0) |
+      RegEx("\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x7F", REGEX_OR) |
+      RegEx(0x0E, 0x1F) |
+      (RegEx('\xC2') + (RegEx('\x80', '\x84') | RegEx('\x86', '\x9F')));
   return e;
 }
 inline const RegEx& Utf8_ByteOrderMark() {
@@ -82,19 +82,19 @@ inline const RegEx& Utf8_ByteOrderMark() {
 // actual tags
 
 inline const RegEx& DocStart() {
-  static const RegEx e = RegEx("---") + (BlankOrBreak() || RegEx());
+  static const RegEx e = RegEx("---") + (BlankOrBreak() | RegEx());
   return e;
 }
 inline const RegEx& DocEnd() {
-  static const RegEx e = RegEx("...") + (BlankOrBreak() || RegEx());
+  static const RegEx e = RegEx("...") + (BlankOrBreak() | RegEx());
   return e;
 }
 inline const RegEx& DocIndicator() {
-  static const RegEx e = DocStart() || DocEnd();
+  static const RegEx e = DocStart() | DocEnd();
   return e;
 }
 inline const RegEx& BlockEntry() {
-  static const RegEx e = RegEx('-') + (BlankOrBreak() || RegEx());
+  static const RegEx e = RegEx('-') + (BlankOrBreak() | RegEx());
   return e;
 }
 inline const RegEx& Key() {
@@ -106,11 +106,11 @@ inline const RegEx& KeyInFlow() {
   return e;
 }
 inline const RegEx& Value() {
-  static const RegEx e = RegEx(':') + (BlankOrBreak() || RegEx());
+  static const RegEx e = RegEx(':') + (BlankOrBreak() | RegEx());
   return e;
 }
 inline const RegEx& ValueInFlow() {
-  static const RegEx e = RegEx(':') + (BlankOrBreak() || RegEx(",}", REGEX_OR));
+  static const RegEx e = RegEx(':') + (BlankOrBreak() | RegEx(",}", REGEX_OR));
   return e;
 }
 inline const RegEx& ValueInJSONFlow() {
@@ -122,20 +122,20 @@ inline const RegEx Comment() {
   return e;
 }
 inline const RegEx& Anchor() {
-  static const RegEx e = !(RegEx("[]{},", REGEX_OR) || BlankOrBreak());
+  static const RegEx e = !(RegEx("[]{},", REGEX_OR) | BlankOrBreak());
   return e;
 }
 inline const RegEx& AnchorEnd() {
-  static const RegEx e = RegEx("?:,]}%@`", REGEX_OR) || BlankOrBreak();
+  static const RegEx e = RegEx("?:,]}%@`", REGEX_OR) | BlankOrBreak();
   return e;
 }
 inline const RegEx& URI() {
-  static const RegEx e = Word() || RegEx("#;/?:@&=+$,_.!~*'()[]", REGEX_OR) ||
+  static const RegEx e = Word() | RegEx("#;/?:@&=+$,_.!~*'()[]", REGEX_OR) |
                          (RegEx('%') + Hex() + Hex());
   return e;
 }
 inline const RegEx& Tag() {
-  static const RegEx e = Word() || RegEx("#;/?:@&=+$_.~*'()", REGEX_OR) ||
+  static const RegEx e = Word() | RegEx("#;/?:@&=+$_.~*'()", REGEX_OR) |
                          (RegEx('%') + Hex() + Hex());
   return e;
 }
@@ -148,34 +148,34 @@ inline const RegEx& Tag() {
 // space.
 inline const RegEx& PlainScalar() {
   static const RegEx e =
-      !(BlankOrBreak() || RegEx(",[]{}#&*!|>\'\"%@`", REGEX_OR) ||
-        (RegEx("-?:", REGEX_OR) + (BlankOrBreak() || RegEx())));
+      !(BlankOrBreak() | RegEx(",[]{}#&*!|>\'\"%@`", REGEX_OR) |
+        (RegEx("-?:", REGEX_OR) + (BlankOrBreak() | RegEx())));
   return e;
 }
 inline const RegEx& PlainScalarInFlow() {
   static const RegEx e =
-      !(BlankOrBreak() || RegEx("?,[]{}#&*!|>\'\"%@`", REGEX_OR) ||
+      !(BlankOrBreak() | RegEx("?,[]{}#&*!|>\'\"%@`", REGEX_OR) |
         (RegEx("-:", REGEX_OR) + Blank()));
   return e;
 }
 inline const RegEx& EndScalar() {
-  static const RegEx e = RegEx(':') + (BlankOrBreak() || RegEx());
+  static const RegEx e = RegEx(':') + (BlankOrBreak() | RegEx());
   return e;
 }
 inline const RegEx& EndScalarInFlow() {
   static const RegEx e =
-      (RegEx(':') + (BlankOrBreak() || RegEx() || RegEx(",]}", REGEX_OR))) ||
+      (RegEx(':') + (BlankOrBreak() | RegEx() | RegEx(",]}", REGEX_OR))) |
       RegEx(",?[]{}", REGEX_OR);
   return e;
 }
 
 inline const RegEx& ScanScalarEndInFlow() {
-  static const RegEx e = (EndScalarInFlow() || (BlankOrBreak() + Comment()));
+  static const RegEx e = (EndScalarInFlow() | (BlankOrBreak() + Comment()));
   return e;
 }
 
 inline const RegEx& ScanScalarEnd() {
-  static const RegEx e = EndScalar() || (BlankOrBreak() + Comment());
+  static const RegEx e = EndScalar() | (BlankOrBreak() + Comment());
   return e;
 }
 inline const RegEx& EscSingleQuote() {
@@ -192,8 +192,8 @@ inline const RegEx& ChompIndicator() {
   return e;
 }
 inline const RegEx& Chomp() {
-  static const RegEx e = (ChompIndicator() + Digit()) ||
-                         (Digit() + ChompIndicator()) || ChompIndicator() ||
+  static const RegEx e = (ChompIndicator() + Digit()) |
+                         (Digit() + ChompIndicator()) | ChompIndicator() |
                          Digit();
   return e;
 }
diff --git a/lib/yamlcpp/src/node_data.cpp b/lib/yamlcpp/src/node_data.cpp
index 77cd465..6cfedfc 100644
--- a/lib/yamlcpp/src/node_data.cpp
+++ b/lib/yamlcpp/src/node_data.cpp
@@ -13,14 +13,22 @@
 namespace YAML {
 namespace detail {
 
-std::string node_data::empty_scalar;
+const std::string& node_data::empty_scalar() {
+  static const std::string svalue;
+  return svalue;
+}
 
 node_data::node_data()
     : m_isDefined(false),
       m_mark(Mark::null_mark()),
       m_type(NodeType::Null),
+      m_tag{},
       m_style(EmitterStyle::Default),
-      m_seqSize(0) {}
+      m_scalar{},
+      m_sequence{},
+      m_seqSize(0),
+      m_map{},
+      m_undefinedPairs{} {}
 
 void node_data::mark_defined() {
   if (m_type == NodeType::Undefined)
@@ -188,7 +196,7 @@ void node_data::insert(node& key, node& value, shared_memory_holder pMemory) {
       convert_to_map(pMemory);
       break;
     case NodeType::Scalar:
-      throw BadSubscript();
+      throw BadSubscript(key);
   }
 
   insert_map_pair(key, value);
@@ -197,7 +205,7 @@ void node_data::insert(node& key, node& value, shared_memory_holder pMemory) {
 // indexing
 node* node_data::get(node& key, shared_memory_holder /* pMemory */) const {
   if (m_type != NodeType::Map) {
-    return NULL;
+    return nullptr;
   }
 
   for (node_map::const_iterator it = m_map.begin(); it != m_map.end(); ++it) {
@@ -205,7 +213,7 @@ node* node_data::get(node& key, shared_memory_holder /* pMemory */) const {
       return it->second;
   }
 
-  return NULL;
+  return nullptr;
 }
 
 node& node_data::get(node& key, shared_memory_holder pMemory) {
@@ -218,7 +226,7 @@ node& node_data::get(node& key, shared_memory_holder pMemory) {
       convert_to_map(pMemory);
       break;
     case NodeType::Scalar:
-      throw BadSubscript();
+      throw BadSubscript(key);
   }
 
   for (node_map::const_iterator it = m_map.begin(); it != m_map.end(); ++it) {
@@ -235,6 +243,14 @@ bool node_data::remove(node& key, shared_memory_holder /* pMemory */) {
   if (m_type != NodeType::Map)
     return false;
 
+  for (kv_pairs::iterator it = m_undefinedPairs.begin();
+       it != m_undefinedPairs.end();) {
+    kv_pairs::iterator jt = std::next(it);
+    if (it->first->is(key))
+      m_undefinedPairs.erase(it);
+    it = jt;
+  }
+
   for (node_map::iterator it = m_map.begin(); it != m_map.end(); ++it) {
     if (it->first->is(key)) {
       m_map.erase(it);
@@ -296,5 +312,5 @@ void node_data::convert_sequence_to_map(shared_memory_holder pMemory) {
   reset_sequence();
   m_type = NodeType::Map;
 }
-}
-}
+}  // namespace detail
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/nodebuilder.cpp b/lib/yamlcpp/src/nodebuilder.cpp
index 093d2ef..c90a66c 100644
--- a/lib/yamlcpp/src/nodebuilder.cpp
+++ b/lib/yamlcpp/src/nodebuilder.cpp
@@ -11,8 +11,13 @@ namespace YAML {
 struct Mark;
 
 NodeBuilder::NodeBuilder()
-    : m_pMemory(new detail::memory_holder), m_pRoot(0), m_mapDepth(0) {
-  m_anchors.push_back(0);  // since the anchors start at 1
+    : m_pMemory(new detail::memory_holder),
+      m_pRoot(nullptr),
+      m_stack{},
+      m_anchors{},
+      m_keys{},
+      m_mapDepth(0) {
+  m_anchors.push_back(nullptr);  // since the anchors start at 1
 }
 
 NodeBuilder::~NodeBuilder() {}
@@ -127,4 +132,4 @@ void NodeBuilder::RegisterAnchor(anchor_t anchor, detail::node& node) {
     m_anchors.push_back(&node);
   }
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/nodebuilder.h b/lib/yamlcpp/src/nodebuilder.h
index a6a47f0..642da36 100644
--- a/lib/yamlcpp/src/nodebuilder.h
+++ b/lib/yamlcpp/src/nodebuilder.h
@@ -27,6 +27,10 @@ class Node;
 class NodeBuilder : public EventHandler {
  public:
   NodeBuilder();
+  NodeBuilder(const NodeBuilder&) = delete;
+  NodeBuilder(NodeBuilder&&) = delete;
+  NodeBuilder& operator=(const NodeBuilder&) = delete;
+  NodeBuilder& operator=(NodeBuilder&&) = delete;
   virtual ~NodeBuilder();
 
   Node Root();
@@ -65,6 +69,6 @@ class NodeBuilder : public EventHandler {
   std::vector<PushedKey> m_keys;
   std::size_t m_mapDepth;
 };
-}
+}  // namespace YAML
 
 #endif  // NODE_NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/nodeevents.cpp b/lib/yamlcpp/src/nodeevents.cpp
index 82261fe..b7222e0 100644
--- a/lib/yamlcpp/src/nodeevents.cpp
+++ b/lib/yamlcpp/src/nodeevents.cpp
@@ -20,7 +20,7 @@ anchor_t NodeEvents::AliasManager::LookupAnchor(
 }
 
 NodeEvents::NodeEvents(const Node& node)
-    : m_pMemory(node.m_pMemory), m_root(node.m_pNode) {
+    : m_pMemory(node.m_pMemory), m_root(node.m_pNode), m_refCount{} {
   if (m_root)
     Setup(*m_root);
 }
@@ -98,4 +98,4 @@ bool NodeEvents::IsAliased(const detail::node& node) const {
   RefCount::const_iterator it = m_refCount.find(node.ref());
   return it != m_refCount.end() && it->second > 1;
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/nodeevents.h b/lib/yamlcpp/src/nodeevents.h
index 49c18eb..dbed5d2 100644
--- a/lib/yamlcpp/src/nodeevents.h
+++ b/lib/yamlcpp/src/nodeevents.h
@@ -26,13 +26,17 @@ class Node;
 class NodeEvents {
  public:
   explicit NodeEvents(const Node& node);
+  NodeEvents(const NodeEvents&) = delete;
+  NodeEvents(NodeEvents&&) = delete;
+  NodeEvents& operator=(const NodeEvents&) = delete;
+  NodeEvents& operator=(NodeEvents&&) = delete;
 
   void Emit(EventHandler& handler);
 
  private:
   class AliasManager {
    public:
-    AliasManager() : m_curAnchor(0) {}
+    AliasManager() : m_anchorByIdentity{}, m_curAnchor(0) {}
 
     void RegisterReference(const detail::node& node);
     anchor_t LookupAnchor(const detail::node& node) const;
@@ -59,6 +63,6 @@ class NodeEvents {
   typedef std::map<const detail::node_ref*, int> RefCount;
   RefCount m_refCount;
 };
-}
+}  // namespace YAML
 
 #endif  // NODE_NODEEVENTS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/ostream_wrapper.cpp b/lib/yamlcpp/src/ostream_wrapper.cpp
index 357fc00..5fa5858 100644
--- a/lib/yamlcpp/src/ostream_wrapper.cpp
+++ b/lib/yamlcpp/src/ostream_wrapper.cpp
@@ -7,14 +7,19 @@
 namespace YAML {
 ostream_wrapper::ostream_wrapper()
     : m_buffer(1, '\0'),
-      m_pStream(0),
+      m_pStream(nullptr),
       m_pos(0),
       m_row(0),
       m_col(0),
       m_comment(false) {}
 
 ostream_wrapper::ostream_wrapper(std::ostream& stream)
-    : m_pStream(&stream), m_pos(0), m_row(0), m_col(0), m_comment(false) {}
+    : m_buffer{},
+      m_pStream(&stream),
+      m_pos(0),
+      m_row(0),
+      m_col(0),
+      m_comment(false) {}
 
 ostream_wrapper::~ostream_wrapper() {}
 
@@ -54,4 +59,4 @@ void ostream_wrapper::update_pos(char ch) {
     m_comment = false;
   }
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/parser.cpp b/lib/yamlcpp/src/parser.cpp
index cd69f39..7bc0c78 100644
--- a/lib/yamlcpp/src/parser.cpp
+++ b/lib/yamlcpp/src/parser.cpp
@@ -11,9 +11,9 @@
 namespace YAML {
 class EventHandler;
 
-Parser::Parser() {}
+Parser::Parser() : m_pScanner{}, m_pDirectives{} {}
 
-Parser::Parser(std::istream& in) { Load(in); }
+Parser::Parser(std::istream& in) : Parser() { Load(in); }
 
 Parser::~Parser() {}
 
@@ -126,4 +126,4 @@ void Parser::PrintTokens(std::ostream& out) {
     m_pScanner->pop();
   }
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/ptr_vector.h b/lib/yamlcpp/src/ptr_vector.h
index 955aebd..d58de04 100644
--- a/lib/yamlcpp/src/ptr_vector.h
+++ b/lib/yamlcpp/src/ptr_vector.h
@@ -12,15 +12,17 @@
 #include <memory>
 #include <vector>
 
-#include "yaml-cpp/noncopyable.h"
-
 namespace YAML {
 
 // TODO: This class is no longer needed
 template <typename T>
-class ptr_vector : private YAML::noncopyable {
+class ptr_vector {
  public:
-  ptr_vector() {}
+  ptr_vector() : m_data{} {}
+  ptr_vector(const ptr_vector&) = delete;
+  ptr_vector(ptr_vector&&) = default;
+  ptr_vector& operator=(const ptr_vector&) = delete;
+  ptr_vector& operator=(ptr_vector&&) = default;
 
   void clear() { m_data.clear(); }
 
@@ -38,6 +40,6 @@ class ptr_vector : private YAML::noncopyable {
  private:
   std::vector<std::unique_ptr<T>> m_data;
 };
-}
+}  // namespace YAML
 
 #endif  // PTR_VECTOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/regex_yaml.cpp b/lib/yamlcpp/src/regex_yaml.cpp
index 20b7720..bf1784b 100644
--- a/lib/yamlcpp/src/regex_yaml.cpp
+++ b/lib/yamlcpp/src/regex_yaml.cpp
@@ -2,18 +2,16 @@
 
 namespace YAML {
 // constructors
-RegEx::RegEx() : m_op(REGEX_EMPTY) {}
 
-RegEx::RegEx(REGEX_OP op) : m_op(op) {}
+RegEx::RegEx(REGEX_OP op) : m_op(op), m_a(0), m_z(0), m_params{} {}
+RegEx::RegEx() : RegEx(REGEX_EMPTY) {}
 
-RegEx::RegEx(char ch) : m_op(REGEX_MATCH), m_a(ch) {}
+RegEx::RegEx(char ch) : m_op(REGEX_MATCH), m_a(ch), m_z(0), m_params{} {}
 
-RegEx::RegEx(char a, char z) : m_op(REGEX_RANGE), m_a(a), m_z(z) {}
+RegEx::RegEx(char a, char z) : m_op(REGEX_RANGE), m_a(a), m_z(z), m_params{} {}
 
-RegEx::RegEx(const std::string& str, REGEX_OP op) : m_op(op) {
-  for (std::size_t i = 0; i < str.size(); i++)
-    m_params.push_back(RegEx(str[i]));
-}
+RegEx::RegEx(const std::string& str, REGEX_OP op)
+    : m_op(op), m_a(0), m_z(0), m_params(str.begin(), str.end()) {}
 
 // combination constructors
 RegEx operator!(const RegEx& ex) {
@@ -22,14 +20,14 @@ RegEx operator!(const RegEx& ex) {
   return ret;
 }
 
-RegEx operator||(const RegEx& ex1, const RegEx& ex2) {
+RegEx operator|(const RegEx& ex1, const RegEx& ex2) {
   RegEx ret(REGEX_OR);
   ret.m_params.push_back(ex1);
   ret.m_params.push_back(ex2);
   return ret;
 }
 
-RegEx operator&&(const RegEx& ex1, const RegEx& ex2) {
+RegEx operator&(const RegEx& ex1, const RegEx& ex2) {
   RegEx ret(REGEX_AND);
   ret.m_params.push_back(ex1);
   ret.m_params.push_back(ex2);
@@ -42,4 +40,4 @@ RegEx operator+(const RegEx& ex1, const RegEx& ex2) {
   ret.m_params.push_back(ex2);
   return ret;
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/regex_yaml.h b/lib/yamlcpp/src/regex_yaml.h
index 8f28b85..3a347bb 100644
--- a/lib/yamlcpp/src/regex_yaml.h
+++ b/lib/yamlcpp/src/regex_yaml.h
@@ -31,14 +31,14 @@ enum REGEX_OP {
 class YAML_CPP_API RegEx {
  public:
   RegEx();
-  RegEx(char ch);
+  explicit RegEx(char ch);
   RegEx(char a, char z);
   RegEx(const std::string& str, REGEX_OP op = REGEX_SEQ);
   ~RegEx() {}
 
   friend YAML_CPP_API RegEx operator!(const RegEx& ex);
-  friend YAML_CPP_API RegEx operator||(const RegEx& ex1, const RegEx& ex2);
-  friend YAML_CPP_API RegEx operator&&(const RegEx& ex1, const RegEx& ex2);
+  friend YAML_CPP_API RegEx operator|(const RegEx& ex1, const RegEx& ex2);
+  friend YAML_CPP_API RegEx operator&(const RegEx& ex1, const RegEx& ex2);
   friend YAML_CPP_API RegEx operator+(const RegEx& ex1, const RegEx& ex2);
 
   bool Matches(char ch) const;
@@ -53,7 +53,7 @@ class YAML_CPP_API RegEx {
   int Match(const Source& source) const;
 
  private:
-  RegEx(REGEX_OP op);
+  explicit RegEx(REGEX_OP op);
 
   template <typename Source>
   bool IsValidSource(const Source& source) const;
@@ -77,10 +77,11 @@ class YAML_CPP_API RegEx {
 
  private:
   REGEX_OP m_op;
-  char m_a, m_z;
+  char m_a{};
+  char m_z{};
   std::vector<RegEx> m_params;
 };
-}
+}  // namespace YAML
 
 #include "regeximpl.h"
 
diff --git a/lib/yamlcpp/src/scanner.cpp b/lib/yamlcpp/src/scanner.cpp
index b5cfcc1..ac84892 100644
--- a/lib/yamlcpp/src/scanner.cpp
+++ b/lib/yamlcpp/src/scanner.cpp
@@ -9,10 +9,15 @@
 namespace YAML {
 Scanner::Scanner(std::istream& in)
     : INPUT(in),
+      m_tokens{},
       m_startedStream(false),
       m_endedStream(false),
       m_simpleKeyAllowed(false),
-      m_canBeJSONFlow(false) {}
+      m_canBeJSONFlow(false),
+      m_simpleKeys{},
+      m_indents{},
+      m_indentRefs{},
+      m_flows{} {}
 
 Scanner::~Scanner() {}
 
@@ -282,7 +287,7 @@ Scanner::IndentMarker* Scanner::PushIndentTo(int column,
                                              IndentMarker::INDENT_TYPE type) {
   // are we in flow?
   if (InFlowContext()) {
-    return 0;
+    return nullptr;
   }
 
   std::unique_ptr<IndentMarker> pIndent(new IndentMarker(column, type));
@@ -291,12 +296,12 @@ Scanner::IndentMarker* Scanner::PushIndentTo(int column,
 
   // is this actually an indentation?
   if (indent.column < lastIndent.column) {
-    return 0;
+    return nullptr;
   }
   if (indent.column == lastIndent.column &&
       !(indent.type == IndentMarker::SEQ &&
         lastIndent.type == IndentMarker::MAP)) {
-    return 0;
+    return nullptr;
   }
 
   // push a start token
diff --git a/lib/yamlcpp/src/scanner.h b/lib/yamlcpp/src/scanner.h
index 7bb2ccc..c653ac6 100644
--- a/lib/yamlcpp/src/scanner.h
+++ b/lib/yamlcpp/src/scanner.h
@@ -49,7 +49,7 @@ class Scanner {
     enum INDENT_TYPE { MAP, SEQ, NONE };
     enum STATUS { VALID, INVALID, UNKNOWN };
     IndentMarker(int column_, INDENT_TYPE type_)
-        : column(column_), type(type_), status(VALID), pStartToken(0) {}
+        : column(column_), type(type_), status(VALID), pStartToken(nullptr) {}
 
     int column;
     INDENT_TYPE type;
diff --git a/lib/yamlcpp/src/scanscalar.cpp b/lib/yamlcpp/src/scanscalar.cpp
index 10e359d..e5b0973 100644
--- a/lib/yamlcpp/src/scanscalar.cpp
+++ b/lib/yamlcpp/src/scanscalar.cpp
@@ -183,7 +183,7 @@ std::string ScanScalar(Stream& INPUT, ScanScalarParams& params) {
         case FOLD_FLOW:
           if (nextEmptyLine) {
             scalar += "\n";
-          } else if (!emptyLine && !nextEmptyLine && !escapedNewline) {
+          } else if (!emptyLine && !escapedNewline) {
             scalar += " ";
           }
           break;
diff --git a/lib/yamlcpp/src/scantoken.cpp b/lib/yamlcpp/src/scantoken.cpp
index fd8758d..325de57 100644
--- a/lib/yamlcpp/src/scantoken.cpp
+++ b/lib/yamlcpp/src/scantoken.cpp
@@ -338,7 +338,7 @@ void Scanner::ScanQuotedScalar() {
 
   // setup the scanning parameters
   ScanScalarParams params;
-  RegEx end = (single ? RegEx(quote) && !Exp::EscSingleQuote() : RegEx(quote));
+  RegEx end = (single ? RegEx(quote) & !Exp::EscSingleQuote() : RegEx(quote));
   params.end = &end;
   params.eatEnd = true;
   params.escape = (single ? '\'' : '\\');
@@ -434,4 +434,4 @@ void Scanner::ScanBlockScalar() {
   token.value = scalar;
   m_tokens.push(token);
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/setting.h b/lib/yamlcpp/src/setting.h
index b78d40e..280d1e7 100644
--- a/lib/yamlcpp/src/setting.h
+++ b/lib/yamlcpp/src/setting.h
@@ -8,8 +8,8 @@
 #endif
 
 #include <memory>
+#include <utility>
 #include <vector>
-#include "yaml-cpp/noncopyable.h"
 
 namespace YAML {
 class SettingChangeBase;
@@ -18,6 +18,7 @@ template <typename T>
 class Setting {
  public:
   Setting() : m_value() {}
+  Setting(const T& value) : m_value() { set(value); }
 
   const T get() const { return m_value; }
   std::unique_ptr<SettingChangeBase> set(const T& value);
@@ -36,10 +37,14 @@ class SettingChangeBase {
 template <typename T>
 class SettingChange : public SettingChangeBase {
  public:
-  SettingChange(Setting<T>* pSetting) : m_pCurSetting(pSetting) {
-    // copy old setting to save its state
-    m_oldSetting = *pSetting;
-  }
+  SettingChange(Setting<T>* pSetting)
+      : m_pCurSetting(pSetting),
+        m_oldSetting(*pSetting)  // copy old setting to save its state
+  {}
+  SettingChange(const SettingChange&) = delete;
+  SettingChange(SettingChange&&) = delete;
+  SettingChange& operator=(const SettingChange&) = delete;
+  SettingChange& operator=(SettingChange&&) = delete;
 
   virtual void pop() { m_pCurSetting->restore(m_oldSetting); }
 
@@ -55,9 +60,12 @@ inline std::unique_ptr<SettingChangeBase> Setting<T>::set(const T& value) {
   return pChange;
 }
 
-class SettingChanges : private noncopyable {
+class SettingChanges {
  public:
-  SettingChanges() {}
+  SettingChanges() : m_settingChanges{} {}
+  SettingChanges(const SettingChanges&) = delete;
+  SettingChanges(SettingChanges&&) = default;
+  SettingChanges& operator=(const SettingChanges&) = delete;
   ~SettingChanges() { clear(); }
 
   void clear() {
@@ -90,6 +98,6 @@ class SettingChanges : private noncopyable {
   typedef std::vector<std::unique_ptr<SettingChangeBase>> setting_changes;
   setting_changes m_settingChanges;
 };
-}
+}  // namespace YAML
 
 #endif  // SETTING_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/simplekey.cpp b/lib/yamlcpp/src/simplekey.cpp
index 70f56b6..c7a2135 100644
--- a/lib/yamlcpp/src/simplekey.cpp
+++ b/lib/yamlcpp/src/simplekey.cpp
@@ -5,7 +5,7 @@ namespace YAML {
 struct Mark;
 
 Scanner::SimpleKey::SimpleKey(const Mark& mark_, std::size_t flowLevel_)
-    : mark(mark_), flowLevel(flowLevel_), pIndent(0), pMapStart(0), pKey(0) {}
+    : mark(mark_), flowLevel(flowLevel_), pIndent(nullptr), pMapStart(nullptr), pKey(nullptr) {}
 
 void Scanner::SimpleKey::Validate() {
   // Note: pIndent will *not* be garbage here;
diff --git a/lib/yamlcpp/src/singledocparser.cpp b/lib/yamlcpp/src/singledocparser.cpp
index a27c1c3..be82741 100644
--- a/lib/yamlcpp/src/singledocparser.cpp
+++ b/lib/yamlcpp/src/singledocparser.cpp
@@ -18,6 +18,7 @@ SingleDocParser::SingleDocParser(Scanner& scanner, const Directives& directives)
     : m_scanner(scanner),
       m_directives(directives),
       m_pCollectionStack(new CollectionStack),
+      m_anchors{},
       m_curAnchor(0) {}
 
 SingleDocParser::~SingleDocParser() {}
@@ -71,8 +72,12 @@ void SingleDocParser::HandleNode(EventHandler& eventHandler) {
   }
 
   std::string tag;
+  std::string anchor_name;
   anchor_t anchor;
-  ParseProperties(tag, anchor);
+  ParseProperties(tag, anchor, anchor_name);
+
+  if (!anchor_name.empty())
+    eventHandler.OnAnchor(mark, anchor_name);
 
   const Token& token = m_scanner.peek();
 
@@ -166,10 +171,10 @@ void SingleDocParser::HandleBlockSequence(EventHandler& eventHandler) {
 
     // check for null
     if (!m_scanner.empty()) {
-      const Token& token = m_scanner.peek();
-      if (token.type == Token::BLOCK_ENTRY ||
-          token.type == Token::BLOCK_SEQ_END) {
-        eventHandler.OnNull(token.mark, NullAnchor);
+      const Token& nextToken = m_scanner.peek();
+      if (nextToken.type == Token::BLOCK_ENTRY ||
+          nextToken.type == Token::BLOCK_SEQ_END) {
+        eventHandler.OnNull(nextToken.mark, NullAnchor);
         continue;
       }
     }
@@ -356,8 +361,10 @@ void SingleDocParser::HandleCompactMapWithNoKey(EventHandler& eventHandler) {
 
 // ParseProperties
 // . Grabs any tag or anchor tokens and deals with them.
-void SingleDocParser::ParseProperties(std::string& tag, anchor_t& anchor) {
+void SingleDocParser::ParseProperties(std::string& tag, anchor_t& anchor,
+                                      std::string& anchor_name) {
   tag.clear();
+  anchor_name.clear();
   anchor = NullAnchor;
 
   while (1) {
@@ -369,7 +376,7 @@ void SingleDocParser::ParseProperties(std::string& tag, anchor_t& anchor) {
         ParseTag(tag);
         break;
       case Token::ANCHOR:
-        ParseAnchor(anchor);
+        ParseAnchor(anchor, anchor_name);
         break;
       default:
         return;
@@ -387,11 +394,12 @@ void SingleDocParser::ParseTag(std::string& tag) {
   m_scanner.pop();
 }
 
-void SingleDocParser::ParseAnchor(anchor_t& anchor) {
+void SingleDocParser::ParseAnchor(anchor_t& anchor, std::string& anchor_name) {
   Token& token = m_scanner.peek();
   if (anchor)
     throw ParserException(token.mark, ErrorMsg::MULTIPLE_ANCHORS);
 
+  anchor_name = token.value;
   anchor = RegisterAnchor(token.value);
   m_scanner.pop();
 }
@@ -411,4 +419,4 @@ anchor_t SingleDocParser::LookupAnchor(const Mark& mark,
 
   return it->second;
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/singledocparser.h b/lib/yamlcpp/src/singledocparser.h
index 2b92067..392453e 100644
--- a/lib/yamlcpp/src/singledocparser.h
+++ b/lib/yamlcpp/src/singledocparser.h
@@ -12,7 +12,6 @@
 #include <string>
 
 #include "yaml-cpp/anchor.h"
-#include "yaml-cpp/noncopyable.h"
 
 namespace YAML {
 class CollectionStack;
@@ -23,9 +22,13 @@ struct Directives;
 struct Mark;
 struct Token;
 
-class SingleDocParser : private noncopyable {
+class SingleDocParser {
  public:
   SingleDocParser(Scanner& scanner, const Directives& directives);
+  SingleDocParser(const SingleDocParser&) = delete;
+  SingleDocParser(SingleDocParser&&) = delete;
+  SingleDocParser& operator=(const SingleDocParser&) = delete;
+  SingleDocParser& operator=(SingleDocParser&&) = delete;
   ~SingleDocParser();
 
   void HandleDocument(EventHandler& eventHandler);
@@ -43,9 +46,10 @@ class SingleDocParser : private noncopyable {
   void HandleCompactMap(EventHandler& eventHandler);
   void HandleCompactMapWithNoKey(EventHandler& eventHandler);
 
-  void ParseProperties(std::string& tag, anchor_t& anchor);
+  void ParseProperties(std::string& tag, anchor_t& anchor,
+                       std::string& anchor_name);
   void ParseTag(std::string& tag);
-  void ParseAnchor(anchor_t& anchor);
+  void ParseAnchor(anchor_t& anchor, std::string& anchor_name);
 
   anchor_t RegisterAnchor(const std::string& name);
   anchor_t LookupAnchor(const Mark& mark, const std::string& name) const;
@@ -60,6 +64,6 @@ class SingleDocParser : private noncopyable {
 
   anchor_t m_curAnchor;
 };
-}
+}  // namespace YAML
 
 #endif  // SINGLEDOCPARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/stream.cpp b/lib/yamlcpp/src/stream.cpp
index 3b013cf..592802d 100644
--- a/lib/yamlcpp/src/stream.cpp
+++ b/lib/yamlcpp/src/stream.cpp
@@ -111,24 +111,15 @@ static UtfIntroState s_introTransitions[][uictMax] = {
 
 static char s_introUngetCount[][uictMax] = {
     // uict00, uictBB, uictBF, uictEF, uictFE, uictFF, uictAscii, uictOther
-    {0, 1, 1, 0, 0, 0, 0, 1},
-    {0, 2, 2, 2, 2, 2, 2, 2},
-    {3, 3, 3, 3, 0, 3, 3, 3},
-    {4, 4, 4, 4, 4, 0, 4, 4},
-    {1, 1, 1, 1, 1, 1, 1, 1},
-    {1, 1, 1, 1, 1, 1, 1, 1},
-    {2, 2, 2, 2, 2, 0, 2, 2},
-    {2, 2, 2, 2, 0, 2, 2, 2},
-    {0, 1, 1, 1, 1, 1, 1, 1},
-    {0, 2, 2, 2, 2, 2, 2, 2},
-    {1, 1, 1, 1, 1, 1, 1, 1},
-    {1, 1, 1, 1, 1, 1, 1, 1},
-    {0, 2, 2, 2, 2, 2, 2, 2},
-    {0, 3, 3, 3, 3, 3, 3, 3},
-    {4, 4, 4, 4, 4, 4, 4, 4},
-    {2, 0, 2, 2, 2, 2, 2, 2},
-    {3, 3, 0, 3, 3, 3, 3, 3},
-    {1, 1, 1, 1, 1, 1, 1, 1},
+    {0, 1, 1, 0, 0, 0, 0, 1}, {0, 2, 2, 2, 2, 2, 2, 2},
+    {3, 3, 3, 3, 0, 3, 3, 3}, {4, 4, 4, 4, 4, 0, 4, 4},
+    {1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1},
+    {2, 2, 2, 2, 2, 0, 2, 2}, {2, 2, 2, 2, 0, 2, 2, 2},
+    {0, 1, 1, 1, 1, 1, 1, 1}, {0, 2, 2, 2, 2, 2, 2, 2},
+    {1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1},
+    {0, 2, 2, 2, 2, 2, 2, 2}, {0, 3, 3, 3, 3, 3, 3, 3},
+    {4, 4, 4, 4, 4, 4, 4, 4}, {2, 0, 2, 2, 2, 2, 2, 2},
+    {3, 3, 0, 3, 3, 3, 3, 3}, {1, 1, 1, 1, 1, 1, 1, 1},
 };
 
 inline UtfIntroCharType IntroCharTypeOf(std::istream::int_type ch) {
@@ -192,6 +183,9 @@ inline void QueueUnicodeCodepoint(std::deque<char>& q, unsigned long ch) {
 
 Stream::Stream(std::istream& input)
     : m_input(input),
+      m_mark{},
+      m_charSet{},
+      m_readahead{},
       m_pPrefetched(new unsigned char[YAML_PREFETCH_SIZE]),
       m_nPrefetchedAvailable(0),
       m_nPrefetchedUsed(0) {
@@ -445,4 +439,4 @@ void Stream::StreamInUtf32() const {
 
   QueueUnicodeCodepoint(m_readahead, ch);
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/stream.h b/lib/yamlcpp/src/stream.h
index 42d542d..ff5149e 100644
--- a/lib/yamlcpp/src/stream.h
+++ b/lib/yamlcpp/src/stream.h
@@ -7,7 +7,6 @@
 #pragma once
 #endif
 
-#include "yaml-cpp/noncopyable.h"
 #include "yaml-cpp/mark.h"
 #include <cstddef>
 #include <deque>
@@ -17,11 +16,15 @@
 #include <string>
 
 namespace YAML {
-class Stream : private noncopyable {
+class Stream {
  public:
   friend class StreamCharSource;
 
   Stream(std::istream& input);
+  Stream(const Stream&) = delete;
+  Stream(Stream&&) = delete;
+  Stream& operator=(const Stream&) = delete;
+  Stream& operator=(Stream&&) = delete;
   ~Stream();
 
   operator bool() const;
@@ -71,6 +74,6 @@ inline bool Stream::ReadAheadTo(size_t i) const {
     return true;
   return _ReadAheadTo(i);
 }
-}
+}  // namespace YAML
 
 #endif  // STREAM_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/streamcharsource.h b/lib/yamlcpp/src/streamcharsource.h
index 624599e..4b6a143 100644
--- a/lib/yamlcpp/src/streamcharsource.h
+++ b/lib/yamlcpp/src/streamcharsource.h
@@ -7,7 +7,6 @@
 #pragma once
 #endif
 
-#include "yaml-cpp/noncopyable.h"
 #include <cstddef>
 
 namespace YAML {
@@ -16,6 +15,9 @@ class StreamCharSource {
   StreamCharSource(const Stream& stream) : m_offset(0), m_stream(stream) {}
   StreamCharSource(const StreamCharSource& source)
       : m_offset(source.m_offset), m_stream(source.m_stream) {}
+  StreamCharSource(StreamCharSource&&) = default;
+  StreamCharSource& operator=(const StreamCharSource&) = delete;
+  StreamCharSource& operator=(StreamCharSource&&) = delete;
   ~StreamCharSource() {}
 
   operator bool() const;
@@ -27,8 +29,6 @@ class StreamCharSource {
  private:
   std::size_t m_offset;
   const Stream& m_stream;
-
-  StreamCharSource& operator=(const StreamCharSource&);  // non-assignable
 };
 
 inline StreamCharSource::operator bool() const {
@@ -43,6 +43,6 @@ inline const StreamCharSource StreamCharSource::operator+(int i) const {
     source.m_offset = 0;
   return source;
 }
-}
+}  // namespace YAML
 
 #endif  // STREAMCHARSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/src/tag.cpp b/lib/yamlcpp/src/tag.cpp
index 5143552..df8a2cf 100644
--- a/lib/yamlcpp/src/tag.cpp
+++ b/lib/yamlcpp/src/tag.cpp
@@ -6,7 +6,8 @@
 #include "token.h"
 
 namespace YAML {
-Tag::Tag(const Token& token) : type(static_cast<TYPE>(token.data)) {
+Tag::Tag(const Token& token)
+    : type(static_cast<TYPE>(token.data)), handle{}, value{} {
   switch (type) {
     case VERBATIM:
       value = token.value;
@@ -46,4 +47,4 @@ const std::string Tag::Translate(const Directives& directives) {
   }
   throw std::runtime_error("yaml-cpp: internal error, bad tag type");
 }
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/src/token.h b/lib/yamlcpp/src/token.h
index ad0b7d0..9a27f3d 100644
--- a/lib/yamlcpp/src/token.h
+++ b/lib/yamlcpp/src/token.h
@@ -14,10 +14,11 @@
 
 namespace YAML {
 const std::string TokenNames[] = {
-    "DIRECTIVE", "DOC_START", "DOC_END", "BLOCK_SEQ_START", "BLOCK_MAP_START",
-    "BLOCK_SEQ_END", "BLOCK_MAP_END", "BLOCK_ENTRY", "FLOW_SEQ_START",
-    "FLOW_MAP_START", "FLOW_SEQ_END", "FLOW_MAP_END", "FLOW_MAP_COMPACT",
-    "FLOW_ENTRY", "KEY", "VALUE", "ANCHOR", "ALIAS", "TAG", "SCALAR"};
+    "DIRECTIVE",        "DOC_START",      "DOC_END",       "BLOCK_SEQ_START",
+    "BLOCK_MAP_START",  "BLOCK_SEQ_END",  "BLOCK_MAP_END", "BLOCK_ENTRY",
+    "FLOW_SEQ_START",   "FLOW_MAP_START", "FLOW_SEQ_END",  "FLOW_MAP_END",
+    "FLOW_MAP_COMPACT", "FLOW_ENTRY",     "KEY",           "VALUE",
+    "ANCHOR",           "ALIAS",          "TAG",           "SCALAR"};
 
 struct Token {
   // enums
@@ -48,7 +49,7 @@ struct Token {
 
   // data
   Token(TYPE type_, const Mark& mark_)
-      : status(VALID), type(type_), mark(mark_), data(0) {}
+      : status(VALID), type(type_), mark(mark_), value{}, params{}, data(0) {}
 
   friend std::ostream& operator<<(std::ostream& out, const Token& token) {
     out << TokenNames[token.type] << std::string(": ") << token.value;
@@ -64,6 +65,6 @@ struct Token {
   std::vector<std::string> params;
   int data;
 };
-}
+}  // namespace YAML
 
 #endif  // TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66
diff --git a/lib/yamlcpp/test/CMakeLists.txt b/lib/yamlcpp/test/CMakeLists.txt
index 3633da5..0a669d5 100644
--- a/lib/yamlcpp/test/CMakeLists.txt
+++ b/lib/yamlcpp/test/CMakeLists.txt
@@ -1,26 +1,39 @@
-set(gtest_force_shared_crt ${MSVC_SHARED_RT} CACHE BOOL
-  "Use shared (DLL) run-time lib even when Google Test built as a static lib.")
-add_subdirectory(gtest-1.8.0)
-include_directories(SYSTEM gtest-1.8.0/googlemock/include)
-include_directories(SYSTEM gtest-1.8.0/googletest/include)
-
-if(WIN32 AND BUILD_SHARED_LIBS)
-  add_definitions("-DGTEST_LINKED_AS_SHARED_LIBRARY")
+include(ExternalProject)
+
+if(MSVC)
+    # MS Visual Studio expects lib prefix on static libraries,
+    # but CMake compiles them without prefix
+    # See https://gitlab.kitware.com/cmake/cmake/issues/17338
+    set(CMAKE_STATIC_LIBRARY_PREFIX "")
 endif()
 
+ExternalProject_Add(
+	googletest_project
+	SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gtest-1.8.0"
+	INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/prefix"
+	CMAKE_ARGS
+		-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+		-DBUILD_GMOCK=ON
+		-Dgtest_force_shared_crt=ON
+)
+
+add_library(gmock UNKNOWN IMPORTED)
+set_target_properties(gmock PROPERTIES
+    IMPORTED_LOCATION
+    ${PROJECT_BINARY_DIR}/test/prefix/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}
+)
+
+find_package(Threads)
+
+include_directories(SYSTEM "${PROJECT_BINARY_DIR}/test/prefix/include")
+
 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
-   CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-  set(yaml_test_flags "-Wno-variadic-macros -Wno-sign-compare")
-
-  if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-    set(yaml_test_flags "${yaml_test_flags} -Wno-c99-extensions")
-  endif()
-
-  if(CMAKE_COMPILER_IS_GNUCXX)
-    set(yaml_test_flags "${yaml_test_flags} -std=gnu++11")
-  else()
-    set(yaml_test_flags "${yaml_test_flags} -std=c++11")
-  endif()
+	CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+	set(yaml_test_flags "-Wno-variadic-macros -Wno-sign-compare")
+
+	if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+		set(yaml_test_flags "${yaml_test_flags} -Wno-c99-extensions")
+	endif()
 endif()
 
 file(GLOB test_headers [a-z_]*.h)
@@ -30,15 +43,27 @@ file(GLOB test_new_api_sources new-api/[a-z]*.cpp)
 list(APPEND test_sources ${test_new_api_sources})
 add_sources(${test_sources} ${test_headers})
 
+include_directories(${YAML_CPP_SOURCE_DIR}/src)
 include_directories(${YAML_CPP_SOURCE_DIR}/test)
 
 add_executable(run-tests
-	${test_sources}
-	${test_headers}
+    ${test_sources}
+    ${test_headers}
+)
+
+set_target_properties(run-tests PROPERTIES
+    CXX_STANDARD 11
+    CXX_STANDARD_REQUIRED ON
 )
+
+add_dependencies(run-tests googletest_project)
+
 set_target_properties(run-tests PROPERTIES
-  COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags} ${yaml_test_flags}"
+    COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags} ${yaml_test_flags}"
 )
-target_link_libraries(run-tests yaml-cpp gmock)
+target_link_libraries(run-tests
+    yaml-cpp
+    gmock
+    ${CMAKE_THREAD_LIBS_INIT})
 
 add_test(yaml-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/run-tests)
diff --git a/lib/yamlcpp/test/create-emitter-tests.py b/lib/yamlcpp/test/create-emitter-tests.py
index a6bf3a4..7295544 100644
--- a/lib/yamlcpp/test/create-emitter-tests.py
+++ b/lib/yamlcpp/test/create-emitter-tests.py
@@ -35,10 +35,12 @@ def doc_end(implicit=False):
 
 def scalar(value, tag='', anchor='', anchor_id=0):
     emit = []
+    handle = []
     if tag:
         emit += ['VerbatimTag("%s")' % encode(tag)]
     if anchor:
         emit += ['Anchor("%s")' % encode(anchor)]
+        handle += ['OnAnchor(_, "%s")' % encode(anchor)]
     if tag:
         out_tag = encode(tag)
     else:
@@ -47,39 +49,46 @@ def scalar(value, tag='', anchor='', anchor_id=0):
         else:
             out_tag = '!'
     emit += ['"%s"' % encode(value)]
-    return {'emit': emit, 'handle': 'OnScalar(_, "%s", %s, "%s")' % (out_tag, anchor_id, encode(value))}
+    handle += ['OnScalar(_, "%s", %s, "%s")' % (out_tag, anchor_id, encode(value))]
+    return {'emit': emit, 'handle': handle}
 
 def comment(value):
     return {'emit': 'Comment("%s")' % value, 'handle': ''}
 
 def seq_start(tag='', anchor='', anchor_id=0, style='_'):
     emit = []
+    handle = []
     if tag:
         emit += ['VerbatimTag("%s")' % encode(tag)]
     if anchor:
         emit += ['Anchor("%s")' % encode(anchor)]
+        handle += ['OnAnchor(_, "%s")' % encode(anchor)]
     if tag:
         out_tag = encode(tag)
     else:
         out_tag = '?'
     emit += ['BeginSeq']
-    return {'emit': emit, 'handle': 'OnSequenceStart(_, "%s", %s, %s)' % (out_tag, anchor_id, style)}
+    handle += ['OnSequenceStart(_, "%s", %s, %s)' % (out_tag, anchor_id, style)]
+    return {'emit': emit, 'handle': handle}
 
 def seq_end():
     return {'emit': 'EndSeq', 'handle': 'OnSequenceEnd()'}
 
 def map_start(tag='', anchor='', anchor_id=0, style='_'):
     emit = []
+    handle = []
     if tag:
         emit += ['VerbatimTag("%s")' % encode(tag)]
     if anchor:
         emit += ['Anchor("%s")' % encode(anchor)]
+        handle += ['OnAnchor(_, "%s")' % encode(anchor)]
     if tag:
         out_tag = encode(tag)
     else:
         out_tag = '?'
     emit += ['BeginMap']
-    return {'emit': emit, 'handle': 'OnMapStart(_, "%s", %s, %s)' % (out_tag, anchor_id, style)}
+    handle += ['OnMapStart(_, "%s", %s, %s)' % (out_tag, anchor_id, style)]
+    return {'emit': emit, 'handle': handle}
 
 def map_end():
     return {'emit': 'EndMap', 'handle': 'OnMapEnd()'}
@@ -124,7 +133,7 @@ def expand(template):
         for car in expand(template[:1]):
             for cdr in expand(template[1:]):
                 yield car + cdr
-
+            
 
 def gen_events():
     for template in gen_templates():
@@ -144,7 +153,7 @@ class Writer(object):
     def __init__(self, out):
         self.out = out
         self.indent = 0
-
+    
     def writeln(self, s):
         self.out.write('%s%s\n' % (' ' * self.indent, s))
 
@@ -157,14 +166,14 @@ class Scope(object):
     def __enter__(self):
         self.writer.writeln('%s {' % self.name)
         self.writer.indent += self.indent
-
+    
     def __exit__(self, type, value, traceback):
         self.writer.indent -= self.indent
         self.writer.writeln('}')
 
 def create_emitter_tests(out):
     out = Writer(out)
-
+    
     includes = [
         'handler_test.h',
         'yaml-cpp/yaml.h',
@@ -202,7 +211,10 @@ def create_emitter_tests(out):
                     out.writeln('')
                     for event in test['events']:
                         handle = event['handle']
-                        if handle:
+                        if isinstance(handle, list):
+                            for e in handle:
+                                out.writeln('EXPECT_CALL(handler, %s);' % e)
+                        elif handle:
                             out.writeln('EXPECT_CALL(handler, %s);' % handle)
                     out.writeln('Parse(out.c_str());')
                 out.writeln('')
diff --git a/lib/yamlcpp/test/integration/emitter_test.cpp b/lib/yamlcpp/test/integration/emitter_test.cpp
index 2780838..3a5783b 100644
--- a/lib/yamlcpp/test/integration/emitter_test.cpp
+++ b/lib/yamlcpp/test/integration/emitter_test.cpp
@@ -253,8 +253,9 @@ TEST_F(EmitterTest, ScalarFormat) {
   out << DoubleQuoted << "explicit double-quoted scalar";
   out << "auto-detected\ndouble-quoted scalar";
   out << "a non-\"auto-detected\" double-quoted scalar";
-  out << Literal << "literal scalar\nthat may span\nmany, many\nlines "
-                    "and have \"whatever\" crazy\tsymbols that we like";
+  out << Literal
+      << "literal scalar\nthat may span\nmany, many\nlines "
+         "and have \"whatever\" crazy\tsymbols that we like";
   out << EndSeq;
 
   ExpectEmit(
@@ -526,9 +527,10 @@ TEST_F(EmitterTest, SimpleComment) {
 
 TEST_F(EmitterTest, MultiLineComment) {
   out << BeginSeq;
-  out << "item 1" << Comment(
-                         "really really long\ncomment that couldn't "
-                         "possibly\nfit on one line");
+  out << "item 1"
+      << Comment(
+             "really really long\ncomment that couldn't "
+             "possibly\nfit on one line");
   out << "item 2";
   out << EndSeq;
 
@@ -901,18 +903,18 @@ TEST_F(EmitterTest, SingleChar) {
 
 TEST_F(EmitterTest, DefaultPrecision) {
   out << BeginSeq;
-  out << 1.234f;
-  out << 3.14159265358979;
+  out << 1.3125f;
+  out << 1.23455810546875;
   out << EndSeq;
-  ExpectEmit("- 1.234\n- 3.14159265358979");
+  ExpectEmit("- 1.3125\n- 1.23455810546875");
 }
 
 TEST_F(EmitterTest, SetPrecision) {
   out << BeginSeq;
-  out << FloatPrecision(3) << 1.234f;
-  out << DoublePrecision(6) << 3.14159265358979;
+  out << FloatPrecision(3) << 1.3125f;
+  out << DoublePrecision(6) << 1.23455810546875;
   out << EndSeq;
-  ExpectEmit("- 1.23\n- 3.14159");
+  ExpectEmit("- 1.31\n- 1.23456");
 }
 
 TEST_F(EmitterTest, DashInBlockContext) {
@@ -984,6 +986,45 @@ TEST_F(EmitterTest, ValueOfBackslash) {
   ExpectEmit("foo: \"\\\\\"");
 }
 
+TEST_F(EmitterTest, Infinity) {
+  out << YAML::BeginMap;
+  out << YAML::Key << "foo" << YAML::Value
+      << std::numeric_limits<float>::infinity();
+  out << YAML::Key << "bar" << YAML::Value
+      << std::numeric_limits<double>::infinity();
+  out << YAML::EndMap;
+
+  ExpectEmit(
+	  "foo: .inf\n"
+	  "bar: .inf");
+}
+
+TEST_F(EmitterTest, NegInfinity) {
+  out << YAML::BeginMap;
+  out << YAML::Key << "foo" << YAML::Value
+      << -std::numeric_limits<float>::infinity();
+  out << YAML::Key << "bar" << YAML::Value
+      << -std::numeric_limits<double>::infinity();
+  out << YAML::EndMap;
+
+  ExpectEmit(
+	  "foo: -.inf\n"
+	  "bar: -.inf");
+}
+
+TEST_F(EmitterTest, NaN) {
+  out << YAML::BeginMap;
+  out << YAML::Key << "foo" << YAML::Value
+      << std::numeric_limits<float>::quiet_NaN();
+  out << YAML::Key << "bar" << YAML::Value
+      << std::numeric_limits<double>::quiet_NaN();
+  out << YAML::EndMap;
+
+  ExpectEmit(
+	  "foo: .nan\n"
+	  "bar: .nan");
+}
+
 class EmitterErrorTest : public ::testing::Test {
  protected:
   void ExpectEmitError(const std::string& expectedError) {
@@ -1034,5 +1075,5 @@ TEST_F(EmitterErrorTest, InvalidAlias) {
 
   ExpectEmitError(ErrorMsg::INVALID_ALIAS);
 }
-}
-}
+}  // namespace
+}  // namespace YAML
diff --git a/lib/yamlcpp/test/integration/error_messages_test.cpp b/lib/yamlcpp/test/integration/error_messages_test.cpp
new file mode 100644
index 0000000..64ab6b9
--- /dev/null
+++ b/lib/yamlcpp/test/integration/error_messages_test.cpp
@@ -0,0 +1,61 @@
+#include "yaml-cpp/yaml.h"  // IWYU pragma: keep
+
+#include "gtest/gtest.h"
+
+#define EXPECT_THROW_EXCEPTION(exception_type, statement, message) \
+  ASSERT_THROW(statement, exception_type);                         \
+  try {                                                            \
+    statement;                                                     \
+  } catch (const exception_type& e) {                              \
+    EXPECT_EQ(e.msg, message);                                     \
+  }
+
+namespace YAML {
+namespace {
+
+TEST(ErrorMessageTest, BadSubscriptErrorMessage) {
+  const char *example_yaml = "first:\n"
+                             "   second: 1\n"
+                             "   third: 2\n";
+
+  Node doc = Load(example_yaml);
+
+  // Test that printable key is part of error message
+  EXPECT_THROW_EXCEPTION(YAML::BadSubscript, doc["first"]["second"]["fourth"],
+                         "operator[] call on a scalar (key: \"fourth\")");
+  
+  EXPECT_THROW_EXCEPTION(YAML::BadSubscript, doc["first"]["second"][37],
+                         "operator[] call on a scalar (key: \"37\")");
+
+
+  // Non-printable key is not included in error message
+  EXPECT_THROW_EXCEPTION(YAML::BadSubscript,
+                         doc["first"]["second"][std::vector<int>()],
+                         "operator[] call on a scalar");
+
+  EXPECT_THROW_EXCEPTION(YAML::BadSubscript, doc["first"]["second"][Node()],
+                         "operator[] call on a scalar");
+}
+
+TEST(ErrorMessageTest, Ex9_1_InvalidNodeErrorMessage) {
+  const char *example_yaml = "first:\n"
+                             "   second: 1\n"
+                             "   third: 2\n";
+
+  const Node doc = Load(example_yaml);
+
+  // Test that printable key is part of error message
+  EXPECT_THROW_EXCEPTION(YAML::InvalidNode, doc["first"]["fourth"].as<int>(),
+                         "invalid node; first invalid key: \"fourth\"");
+  
+  EXPECT_THROW_EXCEPTION(YAML::InvalidNode, doc["first"][37].as<int>(),
+                         "invalid node; first invalid key: \"37\"");
+ 
+  // Non-printable key is not included in error message
+  EXPECT_THROW_EXCEPTION(YAML::InvalidNode,
+                         doc["first"][std::vector<int>()].as<int>(),
+                         "invalid node; this may result from using a map "
+                         "iterator as a sequence iterator, or vice-versa");
+}
+}   
+}
diff --git a/lib/yamlcpp/test/integration/gen_emitter_test.cpp b/lib/yamlcpp/test/integration/gen_emitter_test.cpp
index e44eee6..3536144 100644
--- a/lib/yamlcpp/test/integration/gen_emitter_test.cpp
+++ b/lib/yamlcpp/test/integration/gen_emitter_test.cpp
@@ -10,7 +10,7 @@ namespace {
 
 typedef HandlerTest GenEmitterTest;
 
-TEST_F(GenEmitterTest, testbf4e63edf2258c91fb88) {
+TEST_F(GenEmitterTest, testf2a8b6e6359fb2c30830) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -23,7 +23,7 @@ TEST_F(GenEmitterTest, testbf4e63edf2258c91fb88) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8c2aa26989357a4c8d2d) {
+TEST_F(GenEmitterTest, testa2c9c04eab06a05bf1a3) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -36,7 +36,7 @@ TEST_F(GenEmitterTest, test8c2aa26989357a4c8d2d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf8818f97591e2c51179c) {
+TEST_F(GenEmitterTest, testc5fae995bf84b2f62627) {
   Emitter out;
   out << BeginDoc;
   out << "foo";
@@ -49,7 +49,7 @@ TEST_F(GenEmitterTest, testf8818f97591e2c51179c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2b9d697f1ec84bdc484f) {
+TEST_F(GenEmitterTest, test208b4fb7399a936fce93) {
   Emitter out;
   out << BeginDoc;
   out << "foo";
@@ -62,7 +62,7 @@ TEST_F(GenEmitterTest, test2b9d697f1ec84bdc484f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test969d8cf1535db02242b4) {
+TEST_F(GenEmitterTest, test402085442ada9788bc4e) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -74,7 +74,7 @@ TEST_F(GenEmitterTest, test969d8cf1535db02242b4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test4d16d2c638f0b1131d42) {
+TEST_F(GenEmitterTest, test279346c761f7d9a10aec) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -86,7 +86,7 @@ TEST_F(GenEmitterTest, test4d16d2c638f0b1131d42) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3bdad9a4ffa67cc4201b) {
+TEST_F(GenEmitterTest, test386f6766d57a48ccb316) {
   Emitter out;
   out << BeginDoc;
   out << "foo";
@@ -98,7 +98,7 @@ TEST_F(GenEmitterTest, test3bdad9a4ffa67cc4201b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa57103d877a04b0da3c9) {
+TEST_F(GenEmitterTest, test989baa41ede860374193) {
   Emitter out;
   out << BeginDoc;
   out << "foo";
@@ -110,7 +110,7 @@ TEST_F(GenEmitterTest, testa57103d877a04b0da3c9) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf838cbd6db90346652d6) {
+TEST_F(GenEmitterTest, test718fa11b9bfa9dfc6632) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -123,7 +123,7 @@ TEST_F(GenEmitterTest, testf838cbd6db90346652d6) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste65456c6070d7ed9b292) {
+TEST_F(GenEmitterTest, test7986c74c7cab2ff062e7) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -136,7 +136,7 @@ TEST_F(GenEmitterTest, teste65456c6070d7ed9b292) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test365273601c89ebaeec61) {
+TEST_F(GenEmitterTest, test1a432be0760ebcf72dde) {
   Emitter out;
   out << BeginDoc;
   out << "foo\n";
@@ -149,7 +149,7 @@ TEST_F(GenEmitterTest, test365273601c89ebaeec61) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test92d67b382f78c6a58c2a) {
+TEST_F(GenEmitterTest, test9b4714c8c6dd71f963f1) {
   Emitter out;
   out << BeginDoc;
   out << "foo\n";
@@ -162,7 +162,7 @@ TEST_F(GenEmitterTest, test92d67b382f78c6a58c2a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test49e0bb235c344722e0df) {
+TEST_F(GenEmitterTest, test59d039102f43b05233b2) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -174,7 +174,7 @@ TEST_F(GenEmitterTest, test49e0bb235c344722e0df) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3010c495cd1c61d1ccf2) {
+TEST_F(GenEmitterTest, test15371be5fc126b3601ee) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -186,7 +186,7 @@ TEST_F(GenEmitterTest, test3010c495cd1c61d1ccf2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test22e48c3bc91b32853688) {
+TEST_F(GenEmitterTest, test5a2a5702a41d71567a10) {
   Emitter out;
   out << BeginDoc;
   out << "foo\n";
@@ -198,7 +198,7 @@ TEST_F(GenEmitterTest, test22e48c3bc91b32853688) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test03e42bee2a2c6ffc1dd8) {
+TEST_F(GenEmitterTest, test7975acd31f55f66c21a9) {
   Emitter out;
   out << BeginDoc;
   out << "foo\n";
@@ -210,7 +210,7 @@ TEST_F(GenEmitterTest, test03e42bee2a2c6ffc1dd8) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9662984f64ea0b79b267) {
+TEST_F(GenEmitterTest, test9ab358e41e3af0e1852c) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -224,7 +224,7 @@ TEST_F(GenEmitterTest, test9662984f64ea0b79b267) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf3867ffaec6663c515ff) {
+TEST_F(GenEmitterTest, test6571b17e1089f3f34d41) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -238,7 +238,7 @@ TEST_F(GenEmitterTest, testf3867ffaec6663c515ff) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfd8783233e21636f7f12) {
+TEST_F(GenEmitterTest, test7c8476d0a02eeab3326f) {
   Emitter out;
   out << BeginDoc;
   out << VerbatimTag("tag");
@@ -252,7 +252,7 @@ TEST_F(GenEmitterTest, testfd8783233e21636f7f12) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3fc20508ecea0f4cb165) {
+TEST_F(GenEmitterTest, test0883fa5d170d96324325) {
   Emitter out;
   out << BeginDoc;
   out << VerbatimTag("tag");
@@ -266,7 +266,7 @@ TEST_F(GenEmitterTest, test3fc20508ecea0f4cb165) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste120c09230c813be6c30) {
+TEST_F(GenEmitterTest, test7f44d870f57878e83749) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -279,7 +279,7 @@ TEST_F(GenEmitterTest, teste120c09230c813be6c30) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test835d37d226cbacaa4b2d) {
+TEST_F(GenEmitterTest, testc7b8d9af2a71da438220) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -292,7 +292,7 @@ TEST_F(GenEmitterTest, test835d37d226cbacaa4b2d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7a26848396e9291bf1f1) {
+TEST_F(GenEmitterTest, testa27a4f0174aee7622160) {
   Emitter out;
   out << BeginDoc;
   out << VerbatimTag("tag");
@@ -305,7 +305,7 @@ TEST_F(GenEmitterTest, test7a26848396e9291bf1f1) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test34a821220a5e1441f553) {
+TEST_F(GenEmitterTest, testf06e77dc66bc51682e57) {
   Emitter out;
   out << BeginDoc;
   out << VerbatimTag("tag");
@@ -318,7 +318,7 @@ TEST_F(GenEmitterTest, test34a821220a5e1441f553) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test53e5179db889a79c3ea2) {
+TEST_F(GenEmitterTest, test28c636f42558c217d90b) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -327,12 +327,13 @@ TEST_F(GenEmitterTest, test53e5179db889a79c3ea2) {
   out << EndDoc;
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb8450c68977e0df66c5b) {
+TEST_F(GenEmitterTest, testa8e930c2f4f761519825) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -341,12 +342,13 @@ TEST_F(GenEmitterTest, testb8450c68977e0df66c5b) {
   out << EndDoc;
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste0277d1ed537e53294b4) {
+TEST_F(GenEmitterTest, testc73b721f492b45035034) {
   Emitter out;
   out << BeginDoc;
   out << Anchor("anchor");
@@ -355,12 +357,13 @@ TEST_F(GenEmitterTest, teste0277d1ed537e53294b4) {
   out << EndDoc;
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd6ebe62492bf8757ddde) {
+TEST_F(GenEmitterTest, testb401b54145c71ea07848) {
   Emitter out;
   out << BeginDoc;
   out << Anchor("anchor");
@@ -369,12 +372,13 @@ TEST_F(GenEmitterTest, testd6ebe62492bf8757ddde) {
   out << Comment("comment");
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test56c67a81a5989623dad7) {
+TEST_F(GenEmitterTest, test380d9af0ae2e27279526) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -382,12 +386,13 @@ TEST_F(GenEmitterTest, test56c67a81a5989623dad7) {
   out << "foo";
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testea4c45819b88c22d02b6) {
+TEST_F(GenEmitterTest, test6969308096c6106d1f55) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -395,12 +400,13 @@ TEST_F(GenEmitterTest, testea4c45819b88c22d02b6) {
   out << "foo";
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfa05ed7573dd54074344) {
+TEST_F(GenEmitterTest, testa8afc0036fffa3b2d185) {
   Emitter out;
   out << BeginDoc;
   out << Anchor("anchor");
@@ -408,12 +414,13 @@ TEST_F(GenEmitterTest, testfa05ed7573dd54074344) {
   out << Comment("comment");
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test52431165a20aa2a085dc) {
+TEST_F(GenEmitterTest, test7b41f0a32b90bf5f138d) {
   Emitter out;
   out << BeginDoc;
   out << Anchor("anchor");
@@ -421,12 +428,13 @@ TEST_F(GenEmitterTest, test52431165a20aa2a085dc) {
   out << Comment("comment");
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2e1bf781941755fc5944) {
+TEST_F(GenEmitterTest, test99b1e0027d74c641f4fc) {
   Emitter out;
   out << Comment("comment");
   out << "foo";
@@ -438,7 +446,7 @@ TEST_F(GenEmitterTest, test2e1bf781941755fc5944) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5405b9f863e524bb3e81) {
+TEST_F(GenEmitterTest, test8e45fdb3ff3c00d56f27) {
   Emitter out;
   out << Comment("comment");
   out << "foo";
@@ -450,7 +458,7 @@ TEST_F(GenEmitterTest, test5405b9f863e524bb3e81) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0a7d85109d068170e547) {
+TEST_F(GenEmitterTest, testf898ade0c92d48d498cf) {
   Emitter out;
   out << "foo";
   out << Comment("comment");
@@ -462,7 +470,7 @@ TEST_F(GenEmitterTest, test0a7d85109d068170e547) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testba8dc6889d6983fb0f05) {
+TEST_F(GenEmitterTest, test3eb11fe6897b9638b90c) {
   Emitter out;
   out << "foo";
   out << EndDoc;
@@ -474,7 +482,7 @@ TEST_F(GenEmitterTest, testba8dc6889d6983fb0f05) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd8743fc1225fef185b69) {
+TEST_F(GenEmitterTest, test4e7428248511a461fdae) {
   Emitter out;
   out << Comment("comment");
   out << "foo";
@@ -485,7 +493,7 @@ TEST_F(GenEmitterTest, testd8743fc1225fef185b69) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc2f808fe5fb8b2970b89) {
+TEST_F(GenEmitterTest, testb811cba8e9f57399cd40) {
   Emitter out;
   out << Comment("comment");
   out << "foo";
@@ -496,7 +504,7 @@ TEST_F(GenEmitterTest, testc2f808fe5fb8b2970b89) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test984d0572a31be4451efc) {
+TEST_F(GenEmitterTest, testc625669ef35d9165757f) {
   Emitter out;
   out << "foo";
   out << Comment("comment");
@@ -507,7 +515,7 @@ TEST_F(GenEmitterTest, test984d0572a31be4451efc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa3883cf6b7f84c32ba99) {
+TEST_F(GenEmitterTest, test0bc005214f48707274f7) {
   Emitter out;
   out << "foo";
   out << Comment("comment");
@@ -518,7 +526,7 @@ TEST_F(GenEmitterTest, testa3883cf6b7f84c32ba99) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1fe1f2d242b3a00c5f83) {
+TEST_F(GenEmitterTest, testdccc5288dfb2f680dd82) {
   Emitter out;
   out << Comment("comment");
   out << "foo\n";
@@ -530,7 +538,7 @@ TEST_F(GenEmitterTest, test1fe1f2d242b3a00c5f83) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test80e82792ed68bb0cadbc) {
+TEST_F(GenEmitterTest, test0a928620b149d5644a3b) {
   Emitter out;
   out << Comment("comment");
   out << "foo\n";
@@ -542,7 +550,7 @@ TEST_F(GenEmitterTest, test80e82792ed68bb0cadbc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6756b87f08499449fd53) {
+TEST_F(GenEmitterTest, test72bf9f8ba5207fb041c3) {
   Emitter out;
   out << "foo\n";
   out << Comment("comment");
@@ -554,7 +562,7 @@ TEST_F(GenEmitterTest, test6756b87f08499449fd53) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7d768a7e214b2e791928) {
+TEST_F(GenEmitterTest, test39ba33ec287e431e70d0) {
   Emitter out;
   out << "foo\n";
   out << EndDoc;
@@ -566,7 +574,7 @@ TEST_F(GenEmitterTest, test7d768a7e214b2e791928) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test73470e304962e94c82ee) {
+TEST_F(GenEmitterTest, testce39fe4e650942b617c6) {
   Emitter out;
   out << Comment("comment");
   out << "foo\n";
@@ -577,7 +585,7 @@ TEST_F(GenEmitterTest, test73470e304962e94c82ee) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test220fcaca9f58ed63ab66) {
+TEST_F(GenEmitterTest, test680e99eab986e1cdac01) {
   Emitter out;
   out << Comment("comment");
   out << "foo\n";
@@ -588,7 +596,7 @@ TEST_F(GenEmitterTest, test220fcaca9f58ed63ab66) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7e4c037d370d52aa4da4) {
+TEST_F(GenEmitterTest, teste6e7f73dfac0048154af) {
   Emitter out;
   out << "foo\n";
   out << Comment("comment");
@@ -599,7 +607,7 @@ TEST_F(GenEmitterTest, test7e4c037d370d52aa4da4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test79a2ffc6c8161726f1ed) {
+TEST_F(GenEmitterTest, test19e2c91493d21a389511) {
   Emitter out;
   out << "foo\n";
   out << Comment("comment");
@@ -610,7 +618,7 @@ TEST_F(GenEmitterTest, test79a2ffc6c8161726f1ed) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2a634546fd8c4b92ad18) {
+TEST_F(GenEmitterTest, testc15cdbdbf9661c853def) {
   Emitter out;
   out << Comment("comment");
   out << VerbatimTag("tag");
@@ -623,7 +631,7 @@ TEST_F(GenEmitterTest, test2a634546fd8c4b92ad18) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test84a311c6ca4fe200eff5) {
+TEST_F(GenEmitterTest, testa349878c464f03fa6d4e) {
   Emitter out;
   out << Comment("comment");
   out << VerbatimTag("tag");
@@ -636,7 +644,7 @@ TEST_F(GenEmitterTest, test84a311c6ca4fe200eff5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testef05b48cc1f9318b612f) {
+TEST_F(GenEmitterTest, testc063a846f87b1e20e4e9) {
   Emitter out;
   out << VerbatimTag("tag");
   out << "foo";
@@ -649,7 +657,7 @@ TEST_F(GenEmitterTest, testef05b48cc1f9318b612f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa77250518abd6e019ab8) {
+TEST_F(GenEmitterTest, testdfb3a9ec6da3b792f392) {
   Emitter out;
   out << VerbatimTag("tag");
   out << "foo";
@@ -662,7 +670,7 @@ TEST_F(GenEmitterTest, testa77250518abd6e019ab8) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3e9c6f05218917c77c62) {
+TEST_F(GenEmitterTest, test6f545990782be38424bf) {
   Emitter out;
   out << Comment("comment");
   out << VerbatimTag("tag");
@@ -674,7 +682,7 @@ TEST_F(GenEmitterTest, test3e9c6f05218917c77c62) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7392dd9d6829b8569e16) {
+TEST_F(GenEmitterTest, test9d7dd5e044527a4e8f31) {
   Emitter out;
   out << Comment("comment");
   out << VerbatimTag("tag");
@@ -686,7 +694,7 @@ TEST_F(GenEmitterTest, test7392dd9d6829b8569e16) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8b3e535afd61211d988f) {
+TEST_F(GenEmitterTest, testba570ae83f89342779ff) {
   Emitter out;
   out << VerbatimTag("tag");
   out << "foo";
@@ -698,7 +706,7 @@ TEST_F(GenEmitterTest, test8b3e535afd61211d988f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa88d36caa958ac21e487) {
+TEST_F(GenEmitterTest, testc6fc50c169793aa60531) {
   Emitter out;
   out << VerbatimTag("tag");
   out << "foo";
@@ -710,7 +718,7 @@ TEST_F(GenEmitterTest, testa88d36caa958ac21e487) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0afc4387fea5a0ad574d) {
+TEST_F(GenEmitterTest, testd10a9c9671992acd494d) {
   Emitter out;
   out << Comment("comment");
   out << Anchor("anchor");
@@ -718,12 +726,13 @@ TEST_F(GenEmitterTest, test0afc4387fea5a0ad574d) {
   out << EndDoc;
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6e02b45ba1f87d0b17fa) {
+TEST_F(GenEmitterTest, testd5ee8a3bdb42c8639ad4) {
   Emitter out;
   out << Comment("comment");
   out << Anchor("anchor");
@@ -731,12 +740,13 @@ TEST_F(GenEmitterTest, test6e02b45ba1f87d0b17fa) {
   out << EndDoc;
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1ecee6697402f1ced486) {
+TEST_F(GenEmitterTest, test24914f6c2b7f7d5843c4) {
   Emitter out;
   out << Anchor("anchor");
   out << "foo";
@@ -744,12 +754,13 @@ TEST_F(GenEmitterTest, test1ecee6697402f1ced486) {
   out << EndDoc;
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf778d3e7e1fd4bc81ac8) {
+TEST_F(GenEmitterTest, test9af19fe8c77aa18cd462) {
   Emitter out;
   out << Anchor("anchor");
   out << "foo";
@@ -757,60 +768,65 @@ TEST_F(GenEmitterTest, testf778d3e7e1fd4bc81ac8) {
   out << Comment("comment");
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testce2ddd97c4f7b7cad993) {
+TEST_F(GenEmitterTest, testc2f9274717aaf39b0838) {
   Emitter out;
   out << Comment("comment");
   out << Anchor("anchor");
   out << "foo";
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9801aff946ce11347b78) {
+TEST_F(GenEmitterTest, test75f3a7f62b5b77411653) {
   Emitter out;
   out << Comment("comment");
   out << Anchor("anchor");
   out << "foo";
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test02ae081b4d9719668378) {
+TEST_F(GenEmitterTest, testea51373e6b4e598b2adf) {
   Emitter out;
   out << Anchor("anchor");
   out << "foo";
   out << Comment("comment");
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1c75e643ba55491e9d58) {
+TEST_F(GenEmitterTest, testa594204f0724101d4931) {
   Emitter out;
   out << Anchor("anchor");
   out << "foo";
   out << Comment("comment");
 
   EXPECT_CALL(handler, OnDocumentStart(_));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa834d5e30e0fde106520) {
+TEST_F(GenEmitterTest, test87638f2fba55c5235720) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -825,7 +841,7 @@ TEST_F(GenEmitterTest, testa834d5e30e0fde106520) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test26c5da2b48377ba6d9c3) {
+TEST_F(GenEmitterTest, test786f027ec8e380bdeb45) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -840,7 +856,7 @@ TEST_F(GenEmitterTest, test26c5da2b48377ba6d9c3) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste5df2b4f5b7ed31f5843) {
+TEST_F(GenEmitterTest, test9d9ca2fc29536ef5d392) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -855,7 +871,7 @@ TEST_F(GenEmitterTest, teste5df2b4f5b7ed31f5843) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7da7e14ccc523f8ef682) {
+TEST_F(GenEmitterTest, testde9c33927d8f706e5191) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -870,7 +886,7 @@ TEST_F(GenEmitterTest, test7da7e14ccc523f8ef682) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5dc6d560b8a5defab6a6) {
+TEST_F(GenEmitterTest, testa03392eb1d9af2180eb2) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -885,7 +901,7 @@ TEST_F(GenEmitterTest, test5dc6d560b8a5defab6a6) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5c2184c2ae1d09d7e486) {
+TEST_F(GenEmitterTest, test8826ba8a4954e2775441) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -899,7 +915,7 @@ TEST_F(GenEmitterTest, test5c2184c2ae1d09d7e486) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testcb7ca22e0d0c01cdfd6c) {
+TEST_F(GenEmitterTest, testf116d1ab8a1646bb4295) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -913,7 +929,7 @@ TEST_F(GenEmitterTest, testcb7ca22e0d0c01cdfd6c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test764d56ed21bef8c8ed1d) {
+TEST_F(GenEmitterTest, test1d4afe394248c5d6f190) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -927,7 +943,7 @@ TEST_F(GenEmitterTest, test764d56ed21bef8c8ed1d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testff49b69cd78b76f680f4) {
+TEST_F(GenEmitterTest, test4cc7b190d6dd08368f08) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -941,7 +957,7 @@ TEST_F(GenEmitterTest, testff49b69cd78b76f680f4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb8bbef15bc67a7e8a4f1) {
+TEST_F(GenEmitterTest, testc623063380afa67c57c4) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -955,7 +971,7 @@ TEST_F(GenEmitterTest, testb8bbef15bc67a7e8a4f1) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfe636c029a18a80da2bc) {
+TEST_F(GenEmitterTest, teste24ef3f378c4c33107b2) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -972,7 +988,7 @@ TEST_F(GenEmitterTest, testfe636c029a18a80da2bc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste61e3e6d8f0e748525e6) {
+TEST_F(GenEmitterTest, test2aa8f68b872fd07fde8c) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -989,7 +1005,7 @@ TEST_F(GenEmitterTest, teste61e3e6d8f0e748525e6) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test410c9f00cef2fbe84d3f) {
+TEST_F(GenEmitterTest, test940bf9330572d48b476f) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1006,7 +1022,7 @@ TEST_F(GenEmitterTest, test410c9f00cef2fbe84d3f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2438e75da6ea8f014749) {
+TEST_F(GenEmitterTest, testd710bce67052a991abfa) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1023,7 +1039,7 @@ TEST_F(GenEmitterTest, test2438e75da6ea8f014749) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0eb1e1c40f31df48889a) {
+TEST_F(GenEmitterTest, testd2ac557dae648cd1ba66) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1040,7 +1056,7 @@ TEST_F(GenEmitterTest, test0eb1e1c40f31df48889a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7d9b8575590f008b6dcf) {
+TEST_F(GenEmitterTest, testb394f0e282404d1235d3) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1057,7 +1073,7 @@ TEST_F(GenEmitterTest, test7d9b8575590f008b6dcf) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test65e209ba68cc24d8b595) {
+TEST_F(GenEmitterTest, testaf620080909b118a715d) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -1073,7 +1089,7 @@ TEST_F(GenEmitterTest, test65e209ba68cc24d8b595) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test507a8de1564951289f94) {
+TEST_F(GenEmitterTest, testfc23fc6f424006e5907f) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -1089,7 +1105,7 @@ TEST_F(GenEmitterTest, test507a8de1564951289f94) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfad3bc4da4b3117cbaac) {
+TEST_F(GenEmitterTest, testbc5517fe466dd4988ce2) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1105,7 +1121,7 @@ TEST_F(GenEmitterTest, testfad3bc4da4b3117cbaac) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test56e0e2370b233fb813d0) {
+TEST_F(GenEmitterTest, testc0db52f1be33ddf93852) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1121,7 +1137,7 @@ TEST_F(GenEmitterTest, test56e0e2370b233fb813d0) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0a4ab861864d922b0ef3) {
+TEST_F(GenEmitterTest, test279a9eef5b2d2cf98ecf) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1137,7 +1153,7 @@ TEST_F(GenEmitterTest, test0a4ab861864d922b0ef3) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdfefc6ca543a9fdd2ab4) {
+TEST_F(GenEmitterTest, test7f55b2f00c1090e43af5) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1153,7 +1169,7 @@ TEST_F(GenEmitterTest, testdfefc6ca543a9fdd2ab4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test812eee6d9f35f45d4c74) {
+TEST_F(GenEmitterTest, test1be996b4b790d9bd565d) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -1171,7 +1187,7 @@ TEST_F(GenEmitterTest, test812eee6d9f35f45d4c74) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test40cad31d965f6c4799b2) {
+TEST_F(GenEmitterTest, testa5dea69e968ea27412cc) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -1189,7 +1205,7 @@ TEST_F(GenEmitterTest, test40cad31d965f6c4799b2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testcd959e61fe82eb217264) {
+TEST_F(GenEmitterTest, test77fe0d4370db4aa8af1a) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1207,7 +1223,7 @@ TEST_F(GenEmitterTest, testcd959e61fe82eb217264) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6d9e41274914945389ad) {
+TEST_F(GenEmitterTest, test6d0319a28dd1a931f211) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1225,7 +1241,7 @@ TEST_F(GenEmitterTest, test6d9e41274914945389ad) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testab6b07362d96686c11d0) {
+TEST_F(GenEmitterTest, test0031c4cd5331366162a6) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1243,7 +1259,7 @@ TEST_F(GenEmitterTest, testab6b07362d96686c11d0) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd4c0512efd628009c912) {
+TEST_F(GenEmitterTest, testc0c74d483811e3322ed2) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1261,7 +1277,7 @@ TEST_F(GenEmitterTest, testd4c0512efd628009c912) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2774792a756fc53a2ca9) {
+TEST_F(GenEmitterTest, test0d0938c9dca1e78401d6) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -1278,7 +1294,7 @@ TEST_F(GenEmitterTest, test2774792a756fc53a2ca9) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9f03b22824667c3b1189) {
+TEST_F(GenEmitterTest, test0c83b8f0404e62673099) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -1295,7 +1311,7 @@ TEST_F(GenEmitterTest, test9f03b22824667c3b1189) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test24dd60172cf27492a619) {
+TEST_F(GenEmitterTest, test733fd2f94ae082ea6076) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1312,7 +1328,7 @@ TEST_F(GenEmitterTest, test24dd60172cf27492a619) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa48e3f886fe68e9b48f5) {
+TEST_F(GenEmitterTest, test04b57f98a492b0f2c1ad) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1329,7 +1345,7 @@ TEST_F(GenEmitterTest, testa48e3f886fe68e9b48f5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfc1258212ed3c60e6e0c) {
+TEST_F(GenEmitterTest, test80d83a80f235341f1bff) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1346,7 +1362,7 @@ TEST_F(GenEmitterTest, testfc1258212ed3c60e6e0c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test31c3570f387278586efc) {
+TEST_F(GenEmitterTest, testecbe137bf7436ccd7976) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1363,7 +1379,7 @@ TEST_F(GenEmitterTest, test31c3570f387278586efc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0d2e56437573e1a68e06) {
+TEST_F(GenEmitterTest, testf14f2e8202cacdf9252d) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -1375,13 +1391,14 @@ TEST_F(GenEmitterTest, test0d2e56437573e1a68e06) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test87f2bba12c122a5ef611) {
+TEST_F(GenEmitterTest, test9c029f7cf565580a56fd) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -1393,13 +1410,14 @@ TEST_F(GenEmitterTest, test87f2bba12c122a5ef611) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testce2b83660fc3c47881d9) {
+TEST_F(GenEmitterTest, test129cd28cda34c7b97a89) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1411,13 +1429,14 @@ TEST_F(GenEmitterTest, testce2b83660fc3c47881d9) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1192cd9aee9977c43f91) {
+TEST_F(GenEmitterTest, test1c55ee081412be96e00f) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1429,13 +1448,14 @@ TEST_F(GenEmitterTest, test1192cd9aee9977c43f91) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5ec743a4a5f5d9f250e6) {
+TEST_F(GenEmitterTest, testf9e9d15d9e09a8e98681) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1447,13 +1467,14 @@ TEST_F(GenEmitterTest, test5ec743a4a5f5d9f250e6) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test989ce0d2a8d41f94e563) {
+TEST_F(GenEmitterTest, test03dd7104722840fe7fee) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1465,13 +1486,14 @@ TEST_F(GenEmitterTest, test989ce0d2a8d41f94e563) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test16b16527ce6d2047b885) {
+TEST_F(GenEmitterTest, teste6c856a08270255404b6) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -1482,13 +1504,14 @@ TEST_F(GenEmitterTest, test16b16527ce6d2047b885) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test190462c295b7c1b9be90) {
+TEST_F(GenEmitterTest, testf285ed8797058c0e4e2f) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -1499,13 +1522,14 @@ TEST_F(GenEmitterTest, test190462c295b7c1b9be90) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste179dd43311786d15564) {
+TEST_F(GenEmitterTest, test906076647b894281787e) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1516,13 +1540,14 @@ TEST_F(GenEmitterTest, teste179dd43311786d15564) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test448c118909ba10e1e5c2) {
+TEST_F(GenEmitterTest, test8a836336041c56130c5c) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1533,13 +1558,14 @@ TEST_F(GenEmitterTest, test448c118909ba10e1e5c2) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2aa064c8455651bbbccf) {
+TEST_F(GenEmitterTest, testc7f61ada097fb34f24ce) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1550,13 +1576,14 @@ TEST_F(GenEmitterTest, test2aa064c8455651bbbccf) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test68e7564605ae7013b858) {
+TEST_F(GenEmitterTest, testec075d926fd1f95a1bae) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1567,13 +1594,14 @@ TEST_F(GenEmitterTest, test68e7564605ae7013b858) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test11fa4cf5f845696bf8c9) {
+TEST_F(GenEmitterTest, testa79ce9edc0c3593faa31) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -1586,13 +1614,14 @@ TEST_F(GenEmitterTest, test11fa4cf5f845696bf8c9) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2b2cd9f7d03b725c77f7) {
+TEST_F(GenEmitterTest, test525c133ebf8f46a1962f) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -1605,13 +1634,14 @@ TEST_F(GenEmitterTest, test2b2cd9f7d03b725c77f7) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test846d35c91609d010038a) {
+TEST_F(GenEmitterTest, testb06604d03a8c9cfbe7c2) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1624,13 +1654,14 @@ TEST_F(GenEmitterTest, test846d35c91609d010038a) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0295ace15e4d18d3efff) {
+TEST_F(GenEmitterTest, teste268ba5f2d54120eb665) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1643,13 +1674,14 @@ TEST_F(GenEmitterTest, test0295ace15e4d18d3efff) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test31f01031d12ec0623b22) {
+TEST_F(GenEmitterTest, test7a646350a81bba70e44a) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1662,13 +1694,14 @@ TEST_F(GenEmitterTest, test31f01031d12ec0623b22) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9dfa64a8b15cb1e411f3) {
+TEST_F(GenEmitterTest, test025df570e0d8a1f818da) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1681,13 +1714,14 @@ TEST_F(GenEmitterTest, test9dfa64a8b15cb1e411f3) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2e707476963eb0157f56) {
+TEST_F(GenEmitterTest, test897087b9aba1d5773870) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -1699,13 +1733,14 @@ TEST_F(GenEmitterTest, test2e707476963eb0157f56) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test455d60cf99b6ecf73d46) {
+TEST_F(GenEmitterTest, testa45ee0501da4a4e5da54) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -1717,13 +1752,14 @@ TEST_F(GenEmitterTest, test455d60cf99b6ecf73d46) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa370b09ea89f5df32d03) {
+TEST_F(GenEmitterTest, teste751c06ea558ccca1821) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1735,13 +1771,14 @@ TEST_F(GenEmitterTest, testa370b09ea89f5df32d03) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test325554fe67b486e0ac43) {
+TEST_F(GenEmitterTest, test8526d26e85cc930eecec) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1753,13 +1790,14 @@ TEST_F(GenEmitterTest, test325554fe67b486e0ac43) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0e511740421ef2391918) {
+TEST_F(GenEmitterTest, teste9a5a4a0f0e44311d01a) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1771,13 +1809,14 @@ TEST_F(GenEmitterTest, test0e511740421ef2391918) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test48e6238da58855f75d2d) {
+TEST_F(GenEmitterTest, testac8a091ab93b65aee893) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1789,13 +1828,14 @@ TEST_F(GenEmitterTest, test48e6238da58855f75d2d) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test985ccda3f305aebbe7c1) {
+TEST_F(GenEmitterTest, testee014788f524623b5075) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -1814,7 +1854,7 @@ TEST_F(GenEmitterTest, test985ccda3f305aebbe7c1) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test48a885b1b5192b7d6c42) {
+TEST_F(GenEmitterTest, test57a067545c01c42a7b4e) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -1833,7 +1873,7 @@ TEST_F(GenEmitterTest, test48a885b1b5192b7d6c42) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2d59de662bffd75bdd4e) {
+TEST_F(GenEmitterTest, test948ac02da8825214c869) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1852,7 +1892,7 @@ TEST_F(GenEmitterTest, test2d59de662bffd75bdd4e) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1876b50ad981242e1b5e) {
+TEST_F(GenEmitterTest, testa3d6c5e8a1658c1dd726) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1871,7 +1911,7 @@ TEST_F(GenEmitterTest, test1876b50ad981242e1b5e) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3be092fd7c3394e57a02) {
+TEST_F(GenEmitterTest, test548d71006d7cafde91da) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1890,7 +1930,7 @@ TEST_F(GenEmitterTest, test3be092fd7c3394e57a02) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdaaf6202df0524d94ba2) {
+TEST_F(GenEmitterTest, test35e08ea7459dbee9eab8) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1909,7 +1949,7 @@ TEST_F(GenEmitterTest, testdaaf6202df0524d94ba2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0f9c4973bc77d8baa80b) {
+TEST_F(GenEmitterTest, test87e79665a4339434d781) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1928,7 +1968,7 @@ TEST_F(GenEmitterTest, test0f9c4973bc77d8baa80b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfb738d9af8c3f5d0d89b) {
+TEST_F(GenEmitterTest, test4928d09bc979129c05ca) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -1946,7 +1986,7 @@ TEST_F(GenEmitterTest, testfb738d9af8c3f5d0d89b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7ba35bde1bf4471d19fd) {
+TEST_F(GenEmitterTest, test1d2f73011af6b4486504) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -1964,7 +2004,7 @@ TEST_F(GenEmitterTest, test7ba35bde1bf4471d19fd) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2fc98e907a537e17f435) {
+TEST_F(GenEmitterTest, test2460718f7277d5f42306) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -1982,7 +2022,7 @@ TEST_F(GenEmitterTest, test2fc98e907a537e17f435) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1c2cbe9d3ad5bca645f1) {
+TEST_F(GenEmitterTest, test52309e87b3f0185f982b) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2000,7 +2040,7 @@ TEST_F(GenEmitterTest, test1c2cbe9d3ad5bca645f1) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test999bff6d585448f6f195) {
+TEST_F(GenEmitterTest, testa51d8f1cedfead1de5ab) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2018,7 +2058,7 @@ TEST_F(GenEmitterTest, test999bff6d585448f6f195) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8972a583224ae4553b81) {
+TEST_F(GenEmitterTest, test537bf14b4d578f212f4d) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2036,7 +2076,7 @@ TEST_F(GenEmitterTest, test8972a583224ae4553b81) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test77d2c64329579c726156) {
+TEST_F(GenEmitterTest, teste19e3fd4d5cd52bf6754) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2054,7 +2094,7 @@ TEST_F(GenEmitterTest, test77d2c64329579c726156) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf60e4d264223ca1d8ed0) {
+TEST_F(GenEmitterTest, testf27e53142f2ca0e96a99) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -2070,14 +2110,16 @@ TEST_F(GenEmitterTest, testf60e4d264223ca1d8ed0) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test954d6b81ce04cb78b6a9) {
+TEST_F(GenEmitterTest, test8ce13fdbb0e53e131cbe) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -2093,14 +2135,16 @@ TEST_F(GenEmitterTest, test954d6b81ce04cb78b6a9) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test24e333326d100b0fb309) {
+TEST_F(GenEmitterTest, test9fa693277f014353aa34) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2116,14 +2160,16 @@ TEST_F(GenEmitterTest, test24e333326d100b0fb309) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test996f3742f7296a3dfc08) {
+TEST_F(GenEmitterTest, testc3e4849fb38bc3556f45) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2139,14 +2185,16 @@ TEST_F(GenEmitterTest, test996f3742f7296a3dfc08) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7c795dad3124d186fe05) {
+TEST_F(GenEmitterTest, test34049495795f40da2d52) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2162,14 +2210,16 @@ TEST_F(GenEmitterTest, test7c795dad3124d186fe05) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc2b03c01b73703fad10f) {
+TEST_F(GenEmitterTest, test14353701fc865919ab50) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2185,14 +2235,16 @@ TEST_F(GenEmitterTest, testc2b03c01b73703fad10f) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testab877782f99ac0c76a54) {
+TEST_F(GenEmitterTest, test74547fc0ba8d387c5423) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2208,14 +2260,16 @@ TEST_F(GenEmitterTest, testab877782f99ac0c76a54) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test784517e5fb6049b5eeb8) {
+TEST_F(GenEmitterTest, test52d2b69b185f6ccfff4c) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -2230,14 +2284,16 @@ TEST_F(GenEmitterTest, test784517e5fb6049b5eeb8) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testbb2a1aa3c8fb0b8c763f) {
+TEST_F(GenEmitterTest, test44d442585e5bc9a7644a) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -2252,14 +2308,16 @@ TEST_F(GenEmitterTest, testbb2a1aa3c8fb0b8c763f) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb360035c1b0988456eb8) {
+TEST_F(GenEmitterTest, test3dc263684801dec471c9) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2274,14 +2332,16 @@ TEST_F(GenEmitterTest, testb360035c1b0988456eb8) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test547ca5f2968b36666091) {
+TEST_F(GenEmitterTest, testa04cde3245ad9b929b9a) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2296,14 +2356,16 @@ TEST_F(GenEmitterTest, test547ca5f2968b36666091) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testcfb6b5ffda618b49a876) {
+TEST_F(GenEmitterTest, testd911e740ca36e0509dfa) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2318,14 +2380,16 @@ TEST_F(GenEmitterTest, testcfb6b5ffda618b49a876) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0f42ce2ba53fb3e486f9) {
+TEST_F(GenEmitterTest, testde44215fe9b2e87846ba) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2340,14 +2404,16 @@ TEST_F(GenEmitterTest, test0f42ce2ba53fb3e486f9) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test93e437d10dbd42ac83bb) {
+TEST_F(GenEmitterTest, test6390021323a4889f19d2) {
   Emitter out;
   out << BeginDoc;
   out << BeginSeq;
@@ -2362,14 +2428,16 @@ TEST_F(GenEmitterTest, test93e437d10dbd42ac83bb) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test4267b4f75e3d9582d981) {
+TEST_F(GenEmitterTest, test1db2fcb7347f6cb37dd4) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2383,7 +2451,7 @@ TEST_F(GenEmitterTest, test4267b4f75e3d9582d981) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test62c1e6598c987e3d28a2) {
+TEST_F(GenEmitterTest, test06b32e9d75498ee291d2) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2397,7 +2465,7 @@ TEST_F(GenEmitterTest, test62c1e6598c987e3d28a2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testbcf0ccd5a35fe73714b0) {
+TEST_F(GenEmitterTest, test86654989004963952b15) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -2411,7 +2479,7 @@ TEST_F(GenEmitterTest, testbcf0ccd5a35fe73714b0) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa4c54e8a23771f781411) {
+TEST_F(GenEmitterTest, test53d875fc5058faa44a4e) {
   Emitter out;
   out << BeginSeq;
   out << EndSeq;
@@ -2425,7 +2493,7 @@ TEST_F(GenEmitterTest, testa4c54e8a23771f781411) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testad0a081525db9f568450) {
+TEST_F(GenEmitterTest, test3f4b49a82b6e07eb11fd) {
   Emitter out;
   out << BeginSeq;
   out << EndSeq;
@@ -2439,7 +2507,7 @@ TEST_F(GenEmitterTest, testad0a081525db9f568450) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1c24a291665d1cc4404c) {
+TEST_F(GenEmitterTest, testae4e2fa09d6a34077b6e) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2452,7 +2520,7 @@ TEST_F(GenEmitterTest, test1c24a291665d1cc4404c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testcb331bf2e56388df2f1a) {
+TEST_F(GenEmitterTest, testb181b63559d96d5f848c) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2465,7 +2533,7 @@ TEST_F(GenEmitterTest, testcb331bf2e56388df2f1a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test122fe9269df7f8cb80f7) {
+TEST_F(GenEmitterTest, test817661fec7d3730f4fa6) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -2478,7 +2546,7 @@ TEST_F(GenEmitterTest, test122fe9269df7f8cb80f7) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6a09300420248adaddd4) {
+TEST_F(GenEmitterTest, test34bb2700e9688718fa5a) {
   Emitter out;
   out << BeginSeq;
   out << EndSeq;
@@ -2491,7 +2559,7 @@ TEST_F(GenEmitterTest, test6a09300420248adaddd4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf3bd03889c1e8dceb798) {
+TEST_F(GenEmitterTest, test84e3c1999b6888d2e897) {
   Emitter out;
   out << BeginSeq;
   out << EndSeq;
@@ -2504,7 +2572,7 @@ TEST_F(GenEmitterTest, testf3bd03889c1e8dceb798) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testce882fb9271babb66dc6) {
+TEST_F(GenEmitterTest, testa9d113656780031a99f5) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2520,7 +2588,7 @@ TEST_F(GenEmitterTest, testce882fb9271babb66dc6) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9c237cf40d8848a18afd) {
+TEST_F(GenEmitterTest, test1cd1ead50aaa7b827068) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2536,7 +2604,7 @@ TEST_F(GenEmitterTest, test9c237cf40d8848a18afd) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testcadbaf942d41242c21fc) {
+TEST_F(GenEmitterTest, test1389f95066b07eac89ef) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -2552,7 +2620,7 @@ TEST_F(GenEmitterTest, testcadbaf942d41242c21fc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfc6e5fb862b4ce920622) {
+TEST_F(GenEmitterTest, test709f3a5c294f47f62c1e) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -2568,7 +2636,7 @@ TEST_F(GenEmitterTest, testfc6e5fb862b4ce920622) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test4ecc85dc0cb57f446540) {
+TEST_F(GenEmitterTest, test8a238d7fdee02a368203) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -2584,7 +2652,7 @@ TEST_F(GenEmitterTest, test4ecc85dc0cb57f446540) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test4e844b231f7985238b21) {
+TEST_F(GenEmitterTest, test0d13534e2949ea35ca96) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -2600,7 +2668,7 @@ TEST_F(GenEmitterTest, test4e844b231f7985238b21) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8ec201c2f040093428a7) {
+TEST_F(GenEmitterTest, test10fe6827ed46e0e063a7) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2615,7 +2683,7 @@ TEST_F(GenEmitterTest, test8ec201c2f040093428a7) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test92469ed608395adc2620) {
+TEST_F(GenEmitterTest, testc7eb6d9da57005534c1c) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2630,7 +2698,7 @@ TEST_F(GenEmitterTest, test92469ed608395adc2620) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8a9d541f2dc9c468cbaa) {
+TEST_F(GenEmitterTest, test3f424efd76e1d32727eb) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -2645,7 +2713,7 @@ TEST_F(GenEmitterTest, test8a9d541f2dc9c468cbaa) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6a9392e1353590d282e2) {
+TEST_F(GenEmitterTest, test2bdc361bc6b056f02465) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -2660,7 +2728,7 @@ TEST_F(GenEmitterTest, test6a9392e1353590d282e2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test87d8b037171651caa126) {
+TEST_F(GenEmitterTest, test0cc1936afe5637ba1376) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -2675,7 +2743,7 @@ TEST_F(GenEmitterTest, test87d8b037171651caa126) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1b1bc972209abdacc529) {
+TEST_F(GenEmitterTest, test7d3e2f793963d3480545) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -2690,7 +2758,7 @@ TEST_F(GenEmitterTest, test1b1bc972209abdacc529) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test552483e6a5fe7eee1cc5) {
+TEST_F(GenEmitterTest, testf3f50e76d7ef6e2b2bff) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2707,7 +2775,7 @@ TEST_F(GenEmitterTest, test552483e6a5fe7eee1cc5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test43d39704b3b5e188182a) {
+TEST_F(GenEmitterTest, testcbf1cff67fec9148df1c) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2724,7 +2792,7 @@ TEST_F(GenEmitterTest, test43d39704b3b5e188182a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7318d9b71ec1a8f05621) {
+TEST_F(GenEmitterTest, test168bd4b8dc78b4d524ee) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -2741,7 +2809,7 @@ TEST_F(GenEmitterTest, test7318d9b71ec1a8f05621) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test77302e5c536183072945) {
+TEST_F(GenEmitterTest, testb616ef26030304bca6ef) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -2758,7 +2826,7 @@ TEST_F(GenEmitterTest, test77302e5c536183072945) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5b740c51d614c5cedf1c) {
+TEST_F(GenEmitterTest, test9fda976f36ddb23b38ee) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -2775,7 +2843,7 @@ TEST_F(GenEmitterTest, test5b740c51d614c5cedf1c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb66838e46cf76ce30c95) {
+TEST_F(GenEmitterTest, test48e8c45c081edc86deb2) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -2792,7 +2860,7 @@ TEST_F(GenEmitterTest, testb66838e46cf76ce30c95) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test592cabeb320cc3d6a4a6) {
+TEST_F(GenEmitterTest, test30f5136e817ddd8158de) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2808,7 +2876,7 @@ TEST_F(GenEmitterTest, test592cabeb320cc3d6a4a6) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdcc6e5388f6c2058954f) {
+TEST_F(GenEmitterTest, testeb51d66281f593566172) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2824,7 +2892,7 @@ TEST_F(GenEmitterTest, testdcc6e5388f6c2058954f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1ebbb7521464e6cc5da7) {
+TEST_F(GenEmitterTest, testef6ffa5fa4658785ef00) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -2840,7 +2908,7 @@ TEST_F(GenEmitterTest, test1ebbb7521464e6cc5da7) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8ccc7ae170ad81b12996) {
+TEST_F(GenEmitterTest, test6db34efc6b59e8a7ba18) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -2856,7 +2924,7 @@ TEST_F(GenEmitterTest, test8ccc7ae170ad81b12996) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6421c3c3ed7a65699e0b) {
+TEST_F(GenEmitterTest, test537b9ecc9d9a5b546a9c) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -2872,7 +2940,7 @@ TEST_F(GenEmitterTest, test6421c3c3ed7a65699e0b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test096939c5c407fed2178a) {
+TEST_F(GenEmitterTest, testfadd6ee259c13382f5ce) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -2888,7 +2956,7 @@ TEST_F(GenEmitterTest, test096939c5c407fed2178a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1e79c736bdaf36bcc331) {
+TEST_F(GenEmitterTest, test974ae82483391d01787b) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2899,13 +2967,14 @@ TEST_F(GenEmitterTest, test1e79c736bdaf36bcc331) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa932875b266f62a32a15) {
+TEST_F(GenEmitterTest, test7fc68b49cfe198b30eeb) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -2916,13 +2985,14 @@ TEST_F(GenEmitterTest, testa932875b266f62a32a15) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7211a0d0a7d7b8957fbd) {
+TEST_F(GenEmitterTest, test41644c59ff95f8ec5ec2) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -2933,13 +3003,14 @@ TEST_F(GenEmitterTest, test7211a0d0a7d7b8957fbd) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfe2ed84c5a19bea4324a) {
+TEST_F(GenEmitterTest, testa3a24413b537aece4834) {
   Emitter out;
   out << BeginSeq;
   out << Anchor("anchor");
@@ -2950,13 +3021,14 @@ TEST_F(GenEmitterTest, testfe2ed84c5a19bea4324a) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test05fe79e124bcadf04952) {
+TEST_F(GenEmitterTest, testc4516128af938868b120) {
   Emitter out;
   out << BeginSeq;
   out << Anchor("anchor");
@@ -2967,13 +3039,14 @@ TEST_F(GenEmitterTest, test05fe79e124bcadf04952) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6deaaa4620537aec93bb) {
+TEST_F(GenEmitterTest, testef3c20a56c8a3993cc2d) {
   Emitter out;
   out << BeginSeq;
   out << Anchor("anchor");
@@ -2984,13 +3057,14 @@ TEST_F(GenEmitterTest, test6deaaa4620537aec93bb) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd8f4b7fd570238af0ac6) {
+TEST_F(GenEmitterTest, test83aceee2ee6446347fba) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3000,13 +3074,14 @@ TEST_F(GenEmitterTest, testd8f4b7fd570238af0ac6) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6aa495401fa882fd6ef0) {
+TEST_F(GenEmitterTest, test5a054d76c67b6de340e2) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3016,13 +3091,14 @@ TEST_F(GenEmitterTest, test6aa495401fa882fd6ef0) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3388236bb529c50f5341) {
+TEST_F(GenEmitterTest, testc6706e6b6fc94d1e4752) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -3032,13 +3108,14 @@ TEST_F(GenEmitterTest, test3388236bb529c50f5341) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test79f4266262dffb3f8346) {
+TEST_F(GenEmitterTest, test72f3ded341d6b5d21803) {
   Emitter out;
   out << BeginSeq;
   out << Anchor("anchor");
@@ -3048,13 +3125,14 @@ TEST_F(GenEmitterTest, test79f4266262dffb3f8346) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste858dd76c42bbd281706) {
+TEST_F(GenEmitterTest, test7dc830828b604b5d1839) {
   Emitter out;
   out << BeginSeq;
   out << Anchor("anchor");
@@ -3064,13 +3142,14 @@ TEST_F(GenEmitterTest, teste858dd76c42bbd281706) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7487786b0131b1337e71) {
+TEST_F(GenEmitterTest, test3a5baef0d6a62e5880ef) {
   Emitter out;
   out << BeginSeq;
   out << Anchor("anchor");
@@ -3080,13 +3159,14 @@ TEST_F(GenEmitterTest, test7487786b0131b1337e71) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa9b9110a8d2175a57e7c) {
+TEST_F(GenEmitterTest, testfe7bf25b7a5525cab12a) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3098,13 +3178,14 @@ TEST_F(GenEmitterTest, testa9b9110a8d2175a57e7c) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste99a7f40fb4d939e2da7) {
+TEST_F(GenEmitterTest, test817bf3d583230e503f8e) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3116,13 +3197,14 @@ TEST_F(GenEmitterTest, teste99a7f40fb4d939e2da7) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0e253895bd9cff694f9a) {
+TEST_F(GenEmitterTest, testab122e386b3e30ea59e2) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -3134,13 +3216,14 @@ TEST_F(GenEmitterTest, test0e253895bd9cff694f9a) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf0a8ffd3a895826b093c) {
+TEST_F(GenEmitterTest, test466c3e0dbec8e9660837) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3152,13 +3235,14 @@ TEST_F(GenEmitterTest, testf0a8ffd3a895826b093c) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdae2c374518234f70e9f) {
+TEST_F(GenEmitterTest, test9fc49f92e554cd85e349) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3170,13 +3254,14 @@ TEST_F(GenEmitterTest, testdae2c374518234f70e9f) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc0dae4cd70b3f409cbb4) {
+TEST_F(GenEmitterTest, testf9d2f39bdbd217d70868) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3188,13 +3273,14 @@ TEST_F(GenEmitterTest, testc0dae4cd70b3f409cbb4) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc26f714fb6f9b1ee6cf9) {
+TEST_F(GenEmitterTest, test1ce3d77707f18ec48a19) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3205,13 +3291,14 @@ TEST_F(GenEmitterTest, testc26f714fb6f9b1ee6cf9) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9644620dcb35431e2969) {
+TEST_F(GenEmitterTest, test71df6ecc32e49ea961d4) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3222,13 +3309,14 @@ TEST_F(GenEmitterTest, test9644620dcb35431e2969) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1cfceae5c8e4a64a43ae) {
+TEST_F(GenEmitterTest, test8f37b0a6cc287f8c922f) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -3239,13 +3327,14 @@ TEST_F(GenEmitterTest, test1cfceae5c8e4a64a43ae) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test64f296d213a7ddc7738c) {
+TEST_F(GenEmitterTest, testf992e2a1f7d737647506) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3256,13 +3345,14 @@ TEST_F(GenEmitterTest, test64f296d213a7ddc7738c) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb645b7ae7c95adc70e6f) {
+TEST_F(GenEmitterTest, testd79381f97cdd0af81ae4) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3273,13 +3363,14 @@ TEST_F(GenEmitterTest, testb645b7ae7c95adc70e6f) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3a6fb33f542118758a78) {
+TEST_F(GenEmitterTest, test74ca1feb5f0c520a8518) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3290,13 +3381,14 @@ TEST_F(GenEmitterTest, test3a6fb33f542118758a78) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test98b9868c139b816dcc00) {
+TEST_F(GenEmitterTest, teste86e6fd56707272c091b) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3314,7 +3406,7 @@ TEST_F(GenEmitterTest, test98b9868c139b816dcc00) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test69526d609eb86d3b7917) {
+TEST_F(GenEmitterTest, test1e6f73bc378c184c786b) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3332,7 +3424,7 @@ TEST_F(GenEmitterTest, test69526d609eb86d3b7917) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb569fe86774c96603a89) {
+TEST_F(GenEmitterTest, test3fbac5e1aef66dc40bf7) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -3350,7 +3442,7 @@ TEST_F(GenEmitterTest, testb569fe86774c96603a89) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test03793bbef87d15c4ec74) {
+TEST_F(GenEmitterTest, test558c4bf1c9c6e4e81e98) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -3368,7 +3460,7 @@ TEST_F(GenEmitterTest, test03793bbef87d15c4ec74) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test508ca3314339f0dfb5c8) {
+TEST_F(GenEmitterTest, testfa6d88b26c0072cddb26) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -3386,7 +3478,7 @@ TEST_F(GenEmitterTest, test508ca3314339f0dfb5c8) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7c8a731b32213075b25a) {
+TEST_F(GenEmitterTest, test40a5af3360fb3d9e79f1) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -3404,7 +3496,7 @@ TEST_F(GenEmitterTest, test7c8a731b32213075b25a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb2a840af01cc1074e80f) {
+TEST_F(GenEmitterTest, test451dd95b95b7e958bb03) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -3422,7 +3514,7 @@ TEST_F(GenEmitterTest, testb2a840af01cc1074e80f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8e372218ea9564c579b6) {
+TEST_F(GenEmitterTest, test1717ad2d772bafb9b573) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3439,7 +3531,7 @@ TEST_F(GenEmitterTest, test8e372218ea9564c579b6) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9135f186de91cf9e7538) {
+TEST_F(GenEmitterTest, testedc6737e8b2f5b23b42e) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3456,7 +3548,7 @@ TEST_F(GenEmitterTest, test9135f186de91cf9e7538) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test81be571777fd06470d73) {
+TEST_F(GenEmitterTest, test771c7d28c0b8c184e2c7) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -3473,7 +3565,7 @@ TEST_F(GenEmitterTest, test81be571777fd06470d73) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7614d4928827481a2d8e) {
+TEST_F(GenEmitterTest, test469a446f0b22e9b6d269) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -3490,7 +3582,7 @@ TEST_F(GenEmitterTest, test7614d4928827481a2d8e) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste21f9902a4a5e3c73628) {
+TEST_F(GenEmitterTest, testec45b0503f312be47336) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -3507,7 +3599,7 @@ TEST_F(GenEmitterTest, teste21f9902a4a5e3c73628) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test879d7957916fb5526b7e) {
+TEST_F(GenEmitterTest, test1bfc4f39d6730acb6a12) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -3524,7 +3616,7 @@ TEST_F(GenEmitterTest, test879d7957916fb5526b7e) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8e4e2b3618c7fe67384b) {
+TEST_F(GenEmitterTest, test9bc9a72ad06084dc8cf8) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -3541,7 +3633,7 @@ TEST_F(GenEmitterTest, test8e4e2b3618c7fe67384b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5e8672f96ce5a11b846a) {
+TEST_F(GenEmitterTest, test62c996cdfc1d3b77b7ec) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3556,14 +3648,16 @@ TEST_F(GenEmitterTest, test5e8672f96ce5a11b846a) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test26c021c876f1ef91cff4) {
+TEST_F(GenEmitterTest, test1d038936a340d5bef490) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3578,14 +3672,16 @@ TEST_F(GenEmitterTest, test26c021c876f1ef91cff4) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test04da690e5c32b7bf1dc3) {
+TEST_F(GenEmitterTest, test7057f64ac570dbe3c1ca) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -3600,14 +3696,16 @@ TEST_F(GenEmitterTest, test04da690e5c32b7bf1dc3) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test4bf435d6bad0ca7f8016) {
+TEST_F(GenEmitterTest, testbfe0890de3ffc73f0f9d) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3622,14 +3720,16 @@ TEST_F(GenEmitterTest, test4bf435d6bad0ca7f8016) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test38a40c04ceadf66cb77a) {
+TEST_F(GenEmitterTest, test5faa7320a493247b4f8b) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3644,14 +3744,16 @@ TEST_F(GenEmitterTest, test38a40c04ceadf66cb77a) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test73f543da75154971fa58) {
+TEST_F(GenEmitterTest, test929fbc93b3d6d98b1f0a) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3666,14 +3768,16 @@ TEST_F(GenEmitterTest, test73f543da75154971fa58) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9c2a6b8e53a71cc271f1) {
+TEST_F(GenEmitterTest, testcc7d1ad7797581b37549) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3688,14 +3792,16 @@ TEST_F(GenEmitterTest, test9c2a6b8e53a71cc271f1) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test76e7370aa293790ca0b6) {
+TEST_F(GenEmitterTest, test1115ba981ba8f739ddf2) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3709,14 +3815,16 @@ TEST_F(GenEmitterTest, test76e7370aa293790ca0b6) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test530430c212524fd2d917) {
+TEST_F(GenEmitterTest, testf7ca743a82040e1313a8) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -3730,14 +3838,16 @@ TEST_F(GenEmitterTest, test530430c212524fd2d917) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdc001467ce9060c3e34f) {
+TEST_F(GenEmitterTest, testa4e0257ad6c987178ca4) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -3751,14 +3861,16 @@ TEST_F(GenEmitterTest, testdc001467ce9060c3e34f) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste650915c87ea88e85b7d) {
+TEST_F(GenEmitterTest, testb65ceea0d4080b44180e) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3772,14 +3884,16 @@ TEST_F(GenEmitterTest, teste650915c87ea88e85b7d) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc288c80940cbb3539620) {
+TEST_F(GenEmitterTest, test4fcd60d48dbd7b07e289) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3793,14 +3907,16 @@ TEST_F(GenEmitterTest, testc288c80940cbb3539620) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test18256634c494bbf715ac) {
+TEST_F(GenEmitterTest, test92704937d4e130b43390) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3814,14 +3930,16 @@ TEST_F(GenEmitterTest, test18256634c494bbf715ac) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfaecbb520871c68e74c2) {
+TEST_F(GenEmitterTest, test029a31902f93dfa9ea7b) {
   Emitter out;
   out << BeginSeq;
   out << VerbatimTag("tag");
@@ -3835,14 +3953,16 @@ TEST_F(GenEmitterTest, testfaecbb520871c68e74c2) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd3b1e7d0410f03b69666) {
+TEST_F(GenEmitterTest, test40b4e7494e5b850d26f4) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -3857,7 +3977,7 @@ TEST_F(GenEmitterTest, testd3b1e7d0410f03b69666) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2654cfdffd9be4c24917) {
+TEST_F(GenEmitterTest, test64d2ab5993b67281212b) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -3872,7 +3992,7 @@ TEST_F(GenEmitterTest, test2654cfdffd9be4c24917) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testad5fd5e6d524dd2c4907) {
+TEST_F(GenEmitterTest, teste71b9b975d71c18a2897) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -3887,7 +4007,7 @@ TEST_F(GenEmitterTest, testad5fd5e6d524dd2c4907) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb1b59e0e48f25bf90045) {
+TEST_F(GenEmitterTest, test138039761e432a5ba11e) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -3902,7 +4022,7 @@ TEST_F(GenEmitterTest, testb1b59e0e48f25bf90045) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6a1cd91064a302335507) {
+TEST_F(GenEmitterTest, test6684d2eacb3f094bfc84) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -3917,7 +4037,7 @@ TEST_F(GenEmitterTest, test6a1cd91064a302335507) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7542cfaba20c029d74d2) {
+TEST_F(GenEmitterTest, test8624a705f2167d4db358) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -3931,7 +4051,7 @@ TEST_F(GenEmitterTest, test7542cfaba20c029d74d2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7c64ec9fde647f95ae64) {
+TEST_F(GenEmitterTest, test90877a1ec609edb69bce) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -3945,7 +4065,7 @@ TEST_F(GenEmitterTest, test7c64ec9fde647f95ae64) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testbba41212c116596476f3) {
+TEST_F(GenEmitterTest, test5f925d3c910a7e32bb99) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -3959,7 +4079,7 @@ TEST_F(GenEmitterTest, testbba41212c116596476f3) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test66a3e0c8ba0580adcce7) {
+TEST_F(GenEmitterTest, testffeb4955bf4ee9510a88) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -3973,7 +4093,7 @@ TEST_F(GenEmitterTest, test66a3e0c8ba0580adcce7) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test201f78790b978c826f38) {
+TEST_F(GenEmitterTest, test769ee82c3bfc52d7a85d) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -3987,7 +4107,7 @@ TEST_F(GenEmitterTest, test201f78790b978c826f38) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test85630834239ca1a21b5f) {
+TEST_F(GenEmitterTest, testdc4e16b5a48fe16102b4) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -4006,7 +4126,7 @@ TEST_F(GenEmitterTest, test85630834239ca1a21b5f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6e4aaceae87fea59c777) {
+TEST_F(GenEmitterTest, testd3c578e5b5a6813a73c7) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -4025,7 +4145,7 @@ TEST_F(GenEmitterTest, test6e4aaceae87fea59c777) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test430815076958c69dc3ae) {
+TEST_F(GenEmitterTest, test0034b2c9905b34f7f22e) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4044,7 +4164,7 @@ TEST_F(GenEmitterTest, test430815076958c69dc3ae) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test699eb267a6012eb16178) {
+TEST_F(GenEmitterTest, teste911e620becf080a4d96) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4063,7 +4183,7 @@ TEST_F(GenEmitterTest, test699eb267a6012eb16178) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf51a095fb67ab6d7a2c9) {
+TEST_F(GenEmitterTest, test7f8bbf619609651a2e55) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4082,7 +4202,7 @@ TEST_F(GenEmitterTest, testf51a095fb67ab6d7a2c9) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9c926b68cb956ee2c349) {
+TEST_F(GenEmitterTest, test2974bda177bed72619f4) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4101,7 +4221,7 @@ TEST_F(GenEmitterTest, test9c926b68cb956ee2c349) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testeafd3facc48783e0e3a5) {
+TEST_F(GenEmitterTest, testbc7a1599883ed8c27262) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4120,7 +4240,7 @@ TEST_F(GenEmitterTest, testeafd3facc48783e0e3a5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd702fb9ab5607d2ac819) {
+TEST_F(GenEmitterTest, test323e14a02e02b94939fb) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -4138,7 +4258,7 @@ TEST_F(GenEmitterTest, testd702fb9ab5607d2ac819) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste442f82a0e6799f2610c) {
+TEST_F(GenEmitterTest, test705ff113324bf0b4897c) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -4156,7 +4276,7 @@ TEST_F(GenEmitterTest, teste442f82a0e6799f2610c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test60c91197fb0bb0c6abc3) {
+TEST_F(GenEmitterTest, test587f5739ba58f0e21e0e) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4174,7 +4294,7 @@ TEST_F(GenEmitterTest, test60c91197fb0bb0c6abc3) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb51cf53880c7efae7f00) {
+TEST_F(GenEmitterTest, test31a8c7da96ebe3da3f6e) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4192,7 +4312,7 @@ TEST_F(GenEmitterTest, testb51cf53880c7efae7f00) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test015d48eead15f53dda15) {
+TEST_F(GenEmitterTest, test0b6fe270e4cf9fc21181) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4210,7 +4330,7 @@ TEST_F(GenEmitterTest, test015d48eead15f53dda15) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa6ef6e851b7c9bb8695a) {
+TEST_F(GenEmitterTest, testaf5869c722ea0dfb3394) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4228,7 +4348,7 @@ TEST_F(GenEmitterTest, testa6ef6e851b7c9bb8695a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test77f35be9920c06becdb3) {
+TEST_F(GenEmitterTest, testc348837f92793a778246) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4246,7 +4366,7 @@ TEST_F(GenEmitterTest, test77f35be9920c06becdb3) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdabd5e4aaaf01a76ac53) {
+TEST_F(GenEmitterTest, test9d26ae9ec8db76a06a6f) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -4262,14 +4382,16 @@ TEST_F(GenEmitterTest, testdabd5e4aaaf01a76ac53) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfdfbe118771b6de1e966) {
+TEST_F(GenEmitterTest, test28691969bbaa41191640) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -4285,14 +4407,16 @@ TEST_F(GenEmitterTest, testfdfbe118771b6de1e966) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test4153b34f6f6392539a57) {
+TEST_F(GenEmitterTest, testb38c27cd2556a14bb479) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4308,14 +4432,16 @@ TEST_F(GenEmitterTest, test4153b34f6f6392539a57) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test73cfd1e2fec4af9bcd24) {
+TEST_F(GenEmitterTest, test1103d3c99e3525075da6) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4331,14 +4457,16 @@ TEST_F(GenEmitterTest, test73cfd1e2fec4af9bcd24) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9a25bda309eadfbe8323) {
+TEST_F(GenEmitterTest, testeb7edb5d1dfd039c72c3) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4354,14 +4482,16 @@ TEST_F(GenEmitterTest, test9a25bda309eadfbe8323) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7600d72d8bd5c481b7d2) {
+TEST_F(GenEmitterTest, testa9862d708fcb755db479) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4377,14 +4507,16 @@ TEST_F(GenEmitterTest, test7600d72d8bd5c481b7d2) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste03fdb7c4a58b419523d) {
+TEST_F(GenEmitterTest, testae3e98286336f0c5d2af) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4400,14 +4532,16 @@ TEST_F(GenEmitterTest, teste03fdb7c4a58b419523d) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testcfc06e7baf582f834f85) {
+TEST_F(GenEmitterTest, test8bd970000ae21619e864) {
   Emitter out;
   out << Comment("comment");
   out << BeginDoc;
@@ -4422,14 +4556,16 @@ TEST_F(GenEmitterTest, testcfc06e7baf582f834f85) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test355c684d237adcf5d852) {
+TEST_F(GenEmitterTest, test0a960fe3efeeb1b4fafe) {
   Emitter out;
   out << BeginDoc;
   out << Comment("comment");
@@ -4444,14 +4580,16 @@ TEST_F(GenEmitterTest, test355c684d237adcf5d852) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testbc2e12df3c174bd6b7e3) {
+TEST_F(GenEmitterTest, testffec1dcba9a2622b57a3) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4466,14 +4604,16 @@ TEST_F(GenEmitterTest, testbc2e12df3c174bd6b7e3) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test47220f053e2788618f28) {
+TEST_F(GenEmitterTest, test9a181b6042027e7977bf) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4488,14 +4628,16 @@ TEST_F(GenEmitterTest, test47220f053e2788618f28) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa71dd9a65f4e9563d114) {
+TEST_F(GenEmitterTest, test5b42728bff7e0dd63ae8) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4510,14 +4652,16 @@ TEST_F(GenEmitterTest, testa71dd9a65f4e9563d114) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test188c5ac5c1d6e2174110) {
+TEST_F(GenEmitterTest, testa17514c4db3a70fe5084) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4532,14 +4676,16 @@ TEST_F(GenEmitterTest, test188c5ac5c1d6e2174110) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdc89b13ed8a4694f0296) {
+TEST_F(GenEmitterTest, test2ac903a52c526db4b34b) {
   Emitter out;
   out << BeginDoc;
   out << BeginMap;
@@ -4554,14 +4700,16 @@ TEST_F(GenEmitterTest, testdc89b13ed8a4694f0296) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test91fe618a569a60fa75d0) {
+TEST_F(GenEmitterTest, testbebc6bc66d04a91bfa9c) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4575,7 +4723,7 @@ TEST_F(GenEmitterTest, test91fe618a569a60fa75d0) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1f18c55487cda597929f) {
+TEST_F(GenEmitterTest, test0918e247384bfc94d831) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4589,7 +4737,7 @@ TEST_F(GenEmitterTest, test1f18c55487cda597929f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa74f5aa5747c1ec09ac2) {
+TEST_F(GenEmitterTest, testf8512b2ebdaad8ae4cae) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -4603,7 +4751,7 @@ TEST_F(GenEmitterTest, testa74f5aa5747c1ec09ac2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testda71284d14e9f5902fe5) {
+TEST_F(GenEmitterTest, test01a1d249079c380030ca) {
   Emitter out;
   out << BeginMap;
   out << EndMap;
@@ -4617,7 +4765,7 @@ TEST_F(GenEmitterTest, testda71284d14e9f5902fe5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb041a1dda939d84dd6ed) {
+TEST_F(GenEmitterTest, testcb48737e9c352108dc56) {
   Emitter out;
   out << BeginMap;
   out << EndMap;
@@ -4631,7 +4779,7 @@ TEST_F(GenEmitterTest, testb041a1dda939d84dd6ed) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0f39f734136f83edaab4) {
+TEST_F(GenEmitterTest, testdea8106f3dce46929197) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4644,7 +4792,7 @@ TEST_F(GenEmitterTest, test0f39f734136f83edaab4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste8eed1f3ab25f5395d7b) {
+TEST_F(GenEmitterTest, test2b91aa87abdaa0fc0b20) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4657,7 +4805,7 @@ TEST_F(GenEmitterTest, teste8eed1f3ab25f5395d7b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3c7e3bbca86317884080) {
+TEST_F(GenEmitterTest, test9c8b1fe0c5bbbf6a787e) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -4670,7 +4818,7 @@ TEST_F(GenEmitterTest, test3c7e3bbca86317884080) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdc6b30ad8f00369e0597) {
+TEST_F(GenEmitterTest, test8808d4be9571f365f79a) {
   Emitter out;
   out << BeginMap;
   out << EndMap;
@@ -4683,7 +4831,7 @@ TEST_F(GenEmitterTest, testdc6b30ad8f00369e0597) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa905ff4b380f9fbbb630) {
+TEST_F(GenEmitterTest, teste77c95c5163513fa25c5) {
   Emitter out;
   out << BeginMap;
   out << EndMap;
@@ -4696,7 +4844,7 @@ TEST_F(GenEmitterTest, testa905ff4b380f9fbbb630) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7143b34a608a3c7dc4bf) {
+TEST_F(GenEmitterTest, testa3ed6e26dac366240579) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4714,7 +4862,7 @@ TEST_F(GenEmitterTest, test7143b34a608a3c7dc4bf) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3f56e373d59464d85912) {
+TEST_F(GenEmitterTest, test136adbd0ad47d74cfa22) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4732,7 +4880,7 @@ TEST_F(GenEmitterTest, test3f56e373d59464d85912) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8790906cd88c45aba794) {
+TEST_F(GenEmitterTest, test77f384e8387e39b54691) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -4750,7 +4898,7 @@ TEST_F(GenEmitterTest, test8790906cd88c45aba794) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7eef04e795fe3d520c6f) {
+TEST_F(GenEmitterTest, testf8f016177cf9e428fcd4) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -4768,7 +4916,7 @@ TEST_F(GenEmitterTest, test7eef04e795fe3d520c6f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3378c3dc3604de62c507) {
+TEST_F(GenEmitterTest, test1cec69d3c95937f4137a) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -4786,7 +4934,7 @@ TEST_F(GenEmitterTest, test3378c3dc3604de62c507) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste9742c9cbd88de777d38) {
+TEST_F(GenEmitterTest, testb1fe1a5c5c064bdfe505) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -4804,7 +4952,7 @@ TEST_F(GenEmitterTest, teste9742c9cbd88de777d38) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb74cac7a45f30159f880) {
+TEST_F(GenEmitterTest, test14200fdf4de8797d8dfb) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -4822,7 +4970,7 @@ TEST_F(GenEmitterTest, testb74cac7a45f30159f880) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa4475a6e0ca5a46213db) {
+TEST_F(GenEmitterTest, testde7595a96199f66d7ac0) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4839,7 +4987,7 @@ TEST_F(GenEmitterTest, testa4475a6e0ca5a46213db) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7aa5535404499fd9e6fe) {
+TEST_F(GenEmitterTest, testb1434e1f508509c0ade4) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4856,7 +5004,7 @@ TEST_F(GenEmitterTest, test7aa5535404499fd9e6fe) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test75a57ca05218b76d7aa1) {
+TEST_F(GenEmitterTest, test0d3bd788298201abbe67) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -4873,7 +5021,7 @@ TEST_F(GenEmitterTest, test75a57ca05218b76d7aa1) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test973f12b1e7cdd047a330) {
+TEST_F(GenEmitterTest, test3c716f5c232001f04805) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -4890,7 +5038,7 @@ TEST_F(GenEmitterTest, test973f12b1e7cdd047a330) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test75086003fa734ba2e64c) {
+TEST_F(GenEmitterTest, testa55ef29eecbda5bc5b69) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -4907,7 +5055,7 @@ TEST_F(GenEmitterTest, test75086003fa734ba2e64c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testef9ab805717a642f5d50) {
+TEST_F(GenEmitterTest, test55ddd593defa5ee8da90) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -4924,7 +5072,7 @@ TEST_F(GenEmitterTest, testef9ab805717a642f5d50) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testbbe1014c67cbcd9bff8f) {
+TEST_F(GenEmitterTest, test7326f87fd5c3adff317b) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -4941,7 +5089,7 @@ TEST_F(GenEmitterTest, testbbe1014c67cbcd9bff8f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa0fae19726738031a50d) {
+TEST_F(GenEmitterTest, test5ebc413d376f3b965879) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4956,14 +5104,16 @@ TEST_F(GenEmitterTest, testa0fae19726738031a50d) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8cf4c10b22758615f5dc) {
+TEST_F(GenEmitterTest, test4c7159334e528e2cfff8) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -4978,14 +5128,16 @@ TEST_F(GenEmitterTest, test8cf4c10b22758615f5dc) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test777130969e538d6086d6) {
+TEST_F(GenEmitterTest, test6a6bc06cdfee9f58a094) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -5000,14 +5152,16 @@ TEST_F(GenEmitterTest, test777130969e538d6086d6) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5ab6ba08277cd6a6a349) {
+TEST_F(GenEmitterTest, test0beedfaace1b1e71d0c6) {
   Emitter out;
   out << BeginMap;
   out << VerbatimTag("tag");
@@ -5022,14 +5176,16 @@ TEST_F(GenEmitterTest, test5ab6ba08277cd6a6a349) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test4e6b76c47d712e10f181) {
+TEST_F(GenEmitterTest, test9f65fafc369193908b7b) {
   Emitter out;
   out << BeginMap;
   out << VerbatimTag("tag");
@@ -5044,14 +5200,16 @@ TEST_F(GenEmitterTest, test4e6b76c47d712e10f181) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0ccc3ac76a8810b05ab3) {
+TEST_F(GenEmitterTest, test3a5c3ac504d7a58a08ca) {
   Emitter out;
   out << BeginMap;
   out << VerbatimTag("tag");
@@ -5066,14 +5224,16 @@ TEST_F(GenEmitterTest, test0ccc3ac76a8810b05ab3) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3def4b737140116db9f9) {
+TEST_F(GenEmitterTest, testc007513c868038dd3a68) {
   Emitter out;
   out << BeginMap;
   out << VerbatimTag("tag");
@@ -5088,14 +5248,16 @@ TEST_F(GenEmitterTest, test3def4b737140116db9f9) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9ca096634f9d9cec9b36) {
+TEST_F(GenEmitterTest, test89f3ba065cbd341381ec) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5109,14 +5271,16 @@ TEST_F(GenEmitterTest, test9ca096634f9d9cec9b36) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testbf2b7d7182dae8038726) {
+TEST_F(GenEmitterTest, test692c2652cee84e90c096) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5130,14 +5294,16 @@ TEST_F(GenEmitterTest, testbf2b7d7182dae8038726) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa3528cc9ec7b90fc1d8d) {
+TEST_F(GenEmitterTest, test761fba62f7617a03fbf0) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -5151,14 +5317,16 @@ TEST_F(GenEmitterTest, testa3528cc9ec7b90fc1d8d) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf5be0253b15048a37e3a) {
+TEST_F(GenEmitterTest, teste960a69bc06912eb8c76) {
   Emitter out;
   out << BeginMap;
   out << VerbatimTag("tag");
@@ -5172,14 +5340,16 @@ TEST_F(GenEmitterTest, testf5be0253b15048a37e3a) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste338a8f7f7aa9b63cddb) {
+TEST_F(GenEmitterTest, test8f6187c6c2419dbf1770) {
   Emitter out;
   out << BeginMap;
   out << VerbatimTag("tag");
@@ -5193,14 +5363,16 @@ TEST_F(GenEmitterTest, teste338a8f7f7aa9b63cddb) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3628377ede539d44f975) {
+TEST_F(GenEmitterTest, testba6cb3810a074fabc55e) {
   Emitter out;
   out << BeginMap;
   out << VerbatimTag("tag");
@@ -5214,14 +5386,16 @@ TEST_F(GenEmitterTest, test3628377ede539d44f975) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6eb2c2967a88d82d83d9) {
+TEST_F(GenEmitterTest, testac695c3621ec3f104672) {
   Emitter out;
   out << BeginMap;
   out << VerbatimTag("tag");
@@ -5235,14 +5409,16 @@ TEST_F(GenEmitterTest, test6eb2c2967a88d82d83d9) {
 
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, _));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 1, "foo"));
+  EXPECT_CALL(handler, OnAnchor(_, "other"));
   EXPECT_CALL(handler, OnScalar(_, "tag", 2, "bar"));
   EXPECT_CALL(handler, OnMapEnd());
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test03515aba5b291049c262) {
+TEST_F(GenEmitterTest, test86494a6bcb6a65e7029e) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5259,7 +5435,7 @@ TEST_F(GenEmitterTest, test03515aba5b291049c262) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test20eea0df7f54b919cb92) {
+TEST_F(GenEmitterTest, testb406fb13323c199d709c) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5276,7 +5452,7 @@ TEST_F(GenEmitterTest, test20eea0df7f54b919cb92) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6c6ab6f66ce2828d26cd) {
+TEST_F(GenEmitterTest, test4409f685a3e80b9ab415) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -5293,7 +5469,7 @@ TEST_F(GenEmitterTest, test6c6ab6f66ce2828d26cd) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7f415ecadae422f7b0f5) {
+TEST_F(GenEmitterTest, testa74ace9c1f5e18cf3f2a) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5310,7 +5486,7 @@ TEST_F(GenEmitterTest, test7f415ecadae422f7b0f5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0797d220a5428528ec87) {
+TEST_F(GenEmitterTest, testabfc8ce2ca4c3dafa013) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5327,7 +5503,7 @@ TEST_F(GenEmitterTest, test0797d220a5428528ec87) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6e29f19c88864559a43e) {
+TEST_F(GenEmitterTest, test07ff4bbae6104c4e30c1) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5344,7 +5520,7 @@ TEST_F(GenEmitterTest, test6e29f19c88864559a43e) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0fe24accf63e33a71494) {
+TEST_F(GenEmitterTest, test1e3559cacab6d46c98fe) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5361,7 +5537,7 @@ TEST_F(GenEmitterTest, test0fe24accf63e33a71494) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6cc44b957e440b365fbc) {
+TEST_F(GenEmitterTest, test795830e12e5a20213a7e) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5382,7 +5558,7 @@ TEST_F(GenEmitterTest, test6cc44b957e440b365fbc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5de19a26e7af5459141b) {
+TEST_F(GenEmitterTest, test849f2c88c71734fcf3f3) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5403,7 +5579,7 @@ TEST_F(GenEmitterTest, test5de19a26e7af5459141b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testea71fb07f12c70473a81) {
+TEST_F(GenEmitterTest, test7bb139ac1f14e8ae04e2) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -5424,7 +5600,7 @@ TEST_F(GenEmitterTest, testea71fb07f12c70473a81) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa70d56c89e5219a106b6) {
+TEST_F(GenEmitterTest, test58655e359c60bf73986f) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5445,7 +5621,7 @@ TEST_F(GenEmitterTest, testa70d56c89e5219a106b6) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9eac2d394b9528ccd982) {
+TEST_F(GenEmitterTest, testde9f70648448cbd37245) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5466,7 +5642,7 @@ TEST_F(GenEmitterTest, test9eac2d394b9528ccd982) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test25b8b26feb1a8e5e50f9) {
+TEST_F(GenEmitterTest, testfff25037c90a64db8771) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5487,7 +5663,7 @@ TEST_F(GenEmitterTest, test25b8b26feb1a8e5e50f9) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc9498e8d4545fb7ba842) {
+TEST_F(GenEmitterTest, test94b24a286074cac9b881) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5508,7 +5684,7 @@ TEST_F(GenEmitterTest, testc9498e8d4545fb7ba842) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testaf3f79c8ce6b65a71427) {
+TEST_F(GenEmitterTest, test0c678fe6c6dbd3ccf4eb) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5529,7 +5705,7 @@ TEST_F(GenEmitterTest, testaf3f79c8ce6b65a71427) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test921c297e990d295cd067) {
+TEST_F(GenEmitterTest, test15f6ce577f139b9f1b61) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5550,7 +5726,7 @@ TEST_F(GenEmitterTest, test921c297e990d295cd067) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd61d8ef3753e51e671a8) {
+TEST_F(GenEmitterTest, test5e927c8865f44b5c1abe) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5573,7 +5749,7 @@ TEST_F(GenEmitterTest, testd61d8ef3753e51e671a8) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8fa800a208cdaa3e20d7) {
+TEST_F(GenEmitterTest, test235aebc60786962899f1) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5596,7 +5772,7 @@ TEST_F(GenEmitterTest, test8fa800a208cdaa3e20d7) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdf78d6aa9976557adf35) {
+TEST_F(GenEmitterTest, test45e109e1bc3ca312091d) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -5619,7 +5795,7 @@ TEST_F(GenEmitterTest, testdf78d6aa9976557adf35) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf13bfc9be619d52da2b9) {
+TEST_F(GenEmitterTest, test9a58086d44719b21c6b3) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5642,7 +5818,7 @@ TEST_F(GenEmitterTest, testf13bfc9be619d52da2b9) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd69830b6ed705995e364) {
+TEST_F(GenEmitterTest, testa3ac3fa06ae69e9f5c9d) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5665,7 +5841,7 @@ TEST_F(GenEmitterTest, testd69830b6ed705995e364) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste41087bf41e163aa315d) {
+TEST_F(GenEmitterTest, test9ccaf628d78cc8f27857) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5688,7 +5864,7 @@ TEST_F(GenEmitterTest, teste41087bf41e163aa315d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf46aa6778b48f4a04e21) {
+TEST_F(GenEmitterTest, test6b8483101720027fd945) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5711,7 +5887,7 @@ TEST_F(GenEmitterTest, testf46aa6778b48f4a04e21) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste017eaffcd10bfedf757) {
+TEST_F(GenEmitterTest, test1549a08694b053f8a2cb) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5734,7 +5910,7 @@ TEST_F(GenEmitterTest, teste017eaffcd10bfedf757) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1cd2c3e073dac695dfdb) {
+TEST_F(GenEmitterTest, test0417f66daae22676ad66) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5757,7 +5933,7 @@ TEST_F(GenEmitterTest, test1cd2c3e073dac695dfdb) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd2eb393135a7a84aea37) {
+TEST_F(GenEmitterTest, test6b3d4384d27d0ac90b01) {
   Emitter out;
   out << BeginMap;
   out << "foo";
@@ -5780,7 +5956,7 @@ TEST_F(GenEmitterTest, testd2eb393135a7a84aea37) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test79b4dcb868412729afed) {
+TEST_F(GenEmitterTest, testbf166fa245c204799ea8) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5801,7 +5977,7 @@ TEST_F(GenEmitterTest, test79b4dcb868412729afed) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test379fd004b428ddfbabe2) {
+TEST_F(GenEmitterTest, testdf279b50896e8f084ed3) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5822,7 +5998,7 @@ TEST_F(GenEmitterTest, test379fd004b428ddfbabe2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5c13b45235bb1b7e36a9) {
+TEST_F(GenEmitterTest, test7d9b55fe33dfdc6cf930) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -5843,7 +6019,7 @@ TEST_F(GenEmitterTest, test5c13b45235bb1b7e36a9) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test95b9c0c89b4cd2841446) {
+TEST_F(GenEmitterTest, test2b0f0825ac5d9ac3baf7) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -5864,7 +6040,7 @@ TEST_F(GenEmitterTest, test95b9c0c89b4cd2841446) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test14810a0d0234bee070a2) {
+TEST_F(GenEmitterTest, teste4865b227f48a727aafe) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -5885,7 +6061,7 @@ TEST_F(GenEmitterTest, test14810a0d0234bee070a2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8447a364c30880a42ca1) {
+TEST_F(GenEmitterTest, testb02fb812ae14499cc30e) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -5906,7 +6082,7 @@ TEST_F(GenEmitterTest, test8447a364c30880a42ca1) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test09fbd11d82a3777ac376) {
+TEST_F(GenEmitterTest, testa395515c1bce39e737b7) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -5927,7 +6103,7 @@ TEST_F(GenEmitterTest, test09fbd11d82a3777ac376) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testcbb2d4bd62f1ef2f66ad) {
+TEST_F(GenEmitterTest, test813be458848be1ba3bf1) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -5948,7 +6124,7 @@ TEST_F(GenEmitterTest, testcbb2d4bd62f1ef2f66ad) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa0ecef367a1f54e08d00) {
+TEST_F(GenEmitterTest, test23ab6af7b3fc7957a03d) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -5969,7 +6145,7 @@ TEST_F(GenEmitterTest, testa0ecef367a1f54e08d00) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test89c1ba14891887445d1a) {
+TEST_F(GenEmitterTest, testc5fb40e239029d9efa58) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -5994,7 +6170,7 @@ TEST_F(GenEmitterTest, test89c1ba14891887445d1a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test68436e821e03f93754e6) {
+TEST_F(GenEmitterTest, test88b5c599a4f9ac52f951) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -6019,7 +6195,7 @@ TEST_F(GenEmitterTest, test68436e821e03f93754e6) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9d56b9e336a032014977) {
+TEST_F(GenEmitterTest, test3995578993108fa25f88) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -6044,7 +6220,7 @@ TEST_F(GenEmitterTest, test9d56b9e336a032014977) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test38701040630c71bff30d) {
+TEST_F(GenEmitterTest, test61a24036be6f8cd49a28) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6069,7 +6245,7 @@ TEST_F(GenEmitterTest, test38701040630c71bff30d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa5ee191882708767d03a) {
+TEST_F(GenEmitterTest, testc13e02ab3c1bd1db6e55) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6094,7 +6270,7 @@ TEST_F(GenEmitterTest, testa5ee191882708767d03a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7f055e278180eb0f8c0d) {
+TEST_F(GenEmitterTest, testb3ca69f6d7a888644064) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6119,7 +6295,7 @@ TEST_F(GenEmitterTest, test7f055e278180eb0f8c0d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb17a6726041573ad5d90) {
+TEST_F(GenEmitterTest, test4e6337821c858c2f7cfa) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6144,7 +6320,7 @@ TEST_F(GenEmitterTest, testb17a6726041573ad5d90) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0fe7dcb77bf033a58a7d) {
+TEST_F(GenEmitterTest, test8dc4a01d956c779dd8b0) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6169,7 +6345,7 @@ TEST_F(GenEmitterTest, test0fe7dcb77bf033a58a7d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test4df73e774cb1a7044859) {
+TEST_F(GenEmitterTest, test1dae9c6350559f6b9f89) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6194,7 +6370,7 @@ TEST_F(GenEmitterTest, test4df73e774cb1a7044859) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test519ee9f4db0c2cc3cb22) {
+TEST_F(GenEmitterTest, test9f891b1cdde286863956) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6219,7 +6395,7 @@ TEST_F(GenEmitterTest, test519ee9f4db0c2cc3cb22) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test86fdfe330b8b39c502e3) {
+TEST_F(GenEmitterTest, test0704315052c50c54b17a) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6244,7 +6420,7 @@ TEST_F(GenEmitterTest, test86fdfe330b8b39c502e3) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf1f415e2941ace087ef1) {
+TEST_F(GenEmitterTest, test7f5b47cf1d2571afc033) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -6271,7 +6447,7 @@ TEST_F(GenEmitterTest, testf1f415e2941ace087ef1) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test61947172d8a42f6daa33) {
+TEST_F(GenEmitterTest, test5040c19e850e3046d32d) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -6298,7 +6474,7 @@ TEST_F(GenEmitterTest, test61947172d8a42f6daa33) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testad7ddc91f2603dcd8af4) {
+TEST_F(GenEmitterTest, test110665e2f3409ef307ff) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -6325,7 +6501,7 @@ TEST_F(GenEmitterTest, testad7ddc91f2603dcd8af4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3ded81db555ef0e2dd4c) {
+TEST_F(GenEmitterTest, teste9e1549f96267f93651c) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6352,7 +6528,7 @@ TEST_F(GenEmitterTest, test3ded81db555ef0e2dd4c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb1da8147f5442f38a0af) {
+TEST_F(GenEmitterTest, test6a5b6a20fdb6f7c3279e) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6379,7 +6555,7 @@ TEST_F(GenEmitterTest, testb1da8147f5442f38a0af) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testdb0f2d85399318eb7957) {
+TEST_F(GenEmitterTest, test7c568c68f77e34d5c714) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6406,7 +6582,7 @@ TEST_F(GenEmitterTest, testdb0f2d85399318eb7957) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test456b6f61fd4fb5b4b516) {
+TEST_F(GenEmitterTest, testfd8fe783b5297c92d17f) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6433,7 +6609,7 @@ TEST_F(GenEmitterTest, test456b6f61fd4fb5b4b516) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test016098295ec6d033a470) {
+TEST_F(GenEmitterTest, test418b1426e630825a7c85) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6460,7 +6636,7 @@ TEST_F(GenEmitterTest, test016098295ec6d033a470) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1cbee1bf6ca60fa72aa5) {
+TEST_F(GenEmitterTest, test8161c5e486d317e7864e) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6487,7 +6663,7 @@ TEST_F(GenEmitterTest, test1cbee1bf6ca60fa72aa5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testaf9b292d92d4ec50429c) {
+TEST_F(GenEmitterTest, testa48e1915ca7c919db445) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6514,7 +6690,7 @@ TEST_F(GenEmitterTest, testaf9b292d92d4ec50429c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3aded59e694359fa222e) {
+TEST_F(GenEmitterTest, test27124815aea27c053aab) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6541,7 +6717,7 @@ TEST_F(GenEmitterTest, test3aded59e694359fa222e) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6a79d05b97bf18ab27e9) {
+TEST_F(GenEmitterTest, teste751377e4a74306bc555) {
   Emitter out;
   out << BeginMap;
   out << BeginSeq;
@@ -6568,7 +6744,7 @@ TEST_F(GenEmitterTest, test6a79d05b97bf18ab27e9) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test96727e93c95d3dcb5a2b) {
+TEST_F(GenEmitterTest, test36a4cc298255efdd1ef5) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -6591,7 +6767,7 @@ TEST_F(GenEmitterTest, test96727e93c95d3dcb5a2b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test19387cf6dcd0618b416f) {
+TEST_F(GenEmitterTest, test43471dee97b0506909b2) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -6614,7 +6790,7 @@ TEST_F(GenEmitterTest, test19387cf6dcd0618b416f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test755733f3c3c00263610c) {
+TEST_F(GenEmitterTest, test959c85b4e833f72173a6) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -6637,7 +6813,7 @@ TEST_F(GenEmitterTest, test755733f3c3c00263610c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test426a9d79d3e0421c9a57) {
+TEST_F(GenEmitterTest, test3a09723dce29399bc865) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6660,7 +6836,7 @@ TEST_F(GenEmitterTest, test426a9d79d3e0421c9a57) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testefad231fdbf0147b5a46) {
+TEST_F(GenEmitterTest, test958e404277a1c55139af) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6683,7 +6859,7 @@ TEST_F(GenEmitterTest, testefad231fdbf0147b5a46) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test03772c261806afb7c9cc) {
+TEST_F(GenEmitterTest, testb1823407ab0601edc9cb) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6706,7 +6882,7 @@ TEST_F(GenEmitterTest, test03772c261806afb7c9cc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test65734300dcf959922c18) {
+TEST_F(GenEmitterTest, test9993e9dad983b28960aa) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6729,7 +6905,7 @@ TEST_F(GenEmitterTest, test65734300dcf959922c18) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test815ef14ef8792dc2de1d) {
+TEST_F(GenEmitterTest, test8e87f559b25a9a20e11c) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6752,7 +6928,7 @@ TEST_F(GenEmitterTest, test815ef14ef8792dc2de1d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5266cf3b9eb70be75944) {
+TEST_F(GenEmitterTest, testeb431be8504451636efe) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6775,7 +6951,7 @@ TEST_F(GenEmitterTest, test5266cf3b9eb70be75944) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test199b993f2f9302c1c0c8) {
+TEST_F(GenEmitterTest, testf876965882befc7355df) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6798,7 +6974,7 @@ TEST_F(GenEmitterTest, test199b993f2f9302c1c0c8) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test448f8a30d377c0c01b26) {
+TEST_F(GenEmitterTest, testf7e1d47f266f0b940fed) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -6825,7 +7001,7 @@ TEST_F(GenEmitterTest, test448f8a30d377c0c01b26) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa4a3cfe5a74aa90708a5) {
+TEST_F(GenEmitterTest, teste5a4bc646f2182b78cc1) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -6852,7 +7028,7 @@ TEST_F(GenEmitterTest, testa4a3cfe5a74aa90708a5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6de6ac6c26a8d098b529) {
+TEST_F(GenEmitterTest, test6cbedca25c9a8a6bb42e) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -6879,7 +7055,7 @@ TEST_F(GenEmitterTest, test6de6ac6c26a8d098b529) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc9e7f10371f284e94d20) {
+TEST_F(GenEmitterTest, test07613cc34874a5b47577) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6906,7 +7082,7 @@ TEST_F(GenEmitterTest, testc9e7f10371f284e94d20) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test382360950d64ced8a0cc) {
+TEST_F(GenEmitterTest, testa55b7ac19580aeb82d32) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6933,7 +7109,7 @@ TEST_F(GenEmitterTest, test382360950d64ced8a0cc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test52b289c54900ca0a098e) {
+TEST_F(GenEmitterTest, test458f9af92dfb9f64a488) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6960,7 +7136,7 @@ TEST_F(GenEmitterTest, test52b289c54900ca0a098e) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7266716f412852506771) {
+TEST_F(GenEmitterTest, testc4a9c3769e95770bb455) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -6987,7 +7163,7 @@ TEST_F(GenEmitterTest, test7266716f412852506771) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd2ac7d6f40cc75a3c695) {
+TEST_F(GenEmitterTest, testae56654f89fa2416f3db) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7014,7 +7190,7 @@ TEST_F(GenEmitterTest, testd2ac7d6f40cc75a3c695) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test368597fd8bcc0d3aaff0) {
+TEST_F(GenEmitterTest, test1635f71f27e7303c730e) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7041,7 +7217,7 @@ TEST_F(GenEmitterTest, test368597fd8bcc0d3aaff0) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9201309cd67ab579b883) {
+TEST_F(GenEmitterTest, testcd9d835a8d8b8622c63b) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7068,7 +7244,7 @@ TEST_F(GenEmitterTest, test9201309cd67ab579b883) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test30e18cbdd5d04a552625) {
+TEST_F(GenEmitterTest, test3c2d1f91e57040cb8fdd) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7095,7 +7271,7 @@ TEST_F(GenEmitterTest, test30e18cbdd5d04a552625) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa659d36137a8f34911a6) {
+TEST_F(GenEmitterTest, test9bd5b4c002b3b637747f) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7122,7 +7298,7 @@ TEST_F(GenEmitterTest, testa659d36137a8f34911a6) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste0b8302185ee814d6552) {
+TEST_F(GenEmitterTest, testf6c71199cd45b5b8e7e0) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -7151,7 +7327,7 @@ TEST_F(GenEmitterTest, teste0b8302185ee814d6552) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test66793e09aa910bd924ca) {
+TEST_F(GenEmitterTest, test865b02b69742e5513963) {
   Emitter out;
   out << Comment("comment");
   out << BeginMap;
@@ -7180,7 +7356,7 @@ TEST_F(GenEmitterTest, test66793e09aa910bd924ca) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9beaa5ceb1fcfef2a897) {
+TEST_F(GenEmitterTest, test86eb8783dc4367cda931) {
   Emitter out;
   out << BeginMap;
   out << Comment("comment");
@@ -7209,7 +7385,7 @@ TEST_F(GenEmitterTest, test9beaa5ceb1fcfef2a897) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8ccc36c941ec6aa59536) {
+TEST_F(GenEmitterTest, test7f6604058a9d8e2e1219) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7238,7 +7414,7 @@ TEST_F(GenEmitterTest, test8ccc36c941ec6aa59536) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3c8ea05243d098395929) {
+TEST_F(GenEmitterTest, test676b4abcb3cf0530e4da) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7267,7 +7443,7 @@ TEST_F(GenEmitterTest, test3c8ea05243d098395929) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd819abb35a3ff74e764a) {
+TEST_F(GenEmitterTest, teste7e52980e73d442a602b) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7296,7 +7472,7 @@ TEST_F(GenEmitterTest, testd819abb35a3ff74e764a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test416c49d00378b626ad21) {
+TEST_F(GenEmitterTest, testc3d6f480087db4bcd3a1) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7325,7 +7501,7 @@ TEST_F(GenEmitterTest, test416c49d00378b626ad21) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5cd5ecef5b2a297afe21) {
+TEST_F(GenEmitterTest, test6943516ed43da6944e96) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7354,7 +7530,7 @@ TEST_F(GenEmitterTest, test5cd5ecef5b2a297afe21) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9d8ea78df40a20f07e96) {
+TEST_F(GenEmitterTest, testb7e880522d0778ae6e6f) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7383,7 +7559,7 @@ TEST_F(GenEmitterTest, test9d8ea78df40a20f07e96) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste7bdb2f35bec40c207ee) {
+TEST_F(GenEmitterTest, testec39ee51992618c7b154) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7412,7 +7588,7 @@ TEST_F(GenEmitterTest, teste7bdb2f35bec40c207ee) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste6d6da3a612849d32b79) {
+TEST_F(GenEmitterTest, test39f768713a9b3aaffe0d) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7441,7 +7617,7 @@ TEST_F(GenEmitterTest, teste6d6da3a612849d32b79) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test9af66f2efca487828902) {
+TEST_F(GenEmitterTest, testf287a68abc5b8ff7784d) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7470,7 +7646,7 @@ TEST_F(GenEmitterTest, test9af66f2efca487828902) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb05b2fc716f368b6bdfc) {
+TEST_F(GenEmitterTest, testc36154aa87842ba9699f) {
   Emitter out;
   out << BeginMap;
   out << BeginMap;
@@ -7499,7 +7675,7 @@ TEST_F(GenEmitterTest, testb05b2fc716f368b6bdfc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd0713381b33b72abdb58) {
+TEST_F(GenEmitterTest, testa75da84dfc8ee5507157) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -7516,7 +7692,7 @@ TEST_F(GenEmitterTest, testd0713381b33b72abdb58) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc6739cb3a9de4a5c41a7) {
+TEST_F(GenEmitterTest, testc54a03d1735615f7bd60) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -7533,7 +7709,7 @@ TEST_F(GenEmitterTest, testc6739cb3a9de4a5c41a7) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2b4fa669c6b56cd6a117) {
+TEST_F(GenEmitterTest, testf5d72aba828875527d6f) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -7550,7 +7726,7 @@ TEST_F(GenEmitterTest, test2b4fa669c6b56cd6a117) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test29ae2ef656132c069d22) {
+TEST_F(GenEmitterTest, test9e8681a1b27a8524ec5e) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7567,7 +7743,7 @@ TEST_F(GenEmitterTest, test29ae2ef656132c069d22) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd3e2ad21ab7d0890c412) {
+TEST_F(GenEmitterTest, test34678928e79e6eb160f4) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7584,7 +7760,7 @@ TEST_F(GenEmitterTest, testd3e2ad21ab7d0890c412) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test632b0fb6570fa3b1b682) {
+TEST_F(GenEmitterTest, test07c6d6b9e133553d4532) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7601,7 +7777,7 @@ TEST_F(GenEmitterTest, test632b0fb6570fa3b1b682) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc9bcfd496ae3382d546b) {
+TEST_F(GenEmitterTest, test1531642db71e1aa8dd1c) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7618,7 +7794,7 @@ TEST_F(GenEmitterTest, testc9bcfd496ae3382d546b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test43fd860d560c9137add4) {
+TEST_F(GenEmitterTest, test22fde02c0bd0ecb8a527) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -7639,7 +7815,7 @@ TEST_F(GenEmitterTest, test43fd860d560c9137add4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0e47183ab4a56c3a6d36) {
+TEST_F(GenEmitterTest, test72430574ba42559cf917) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -7660,7 +7836,7 @@ TEST_F(GenEmitterTest, test0e47183ab4a56c3a6d36) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf165d91c1dce024c9774) {
+TEST_F(GenEmitterTest, test067bce5d8aa6281a3e6f) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -7681,7 +7857,7 @@ TEST_F(GenEmitterTest, testf165d91c1dce024c9774) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7592a1f019ddb2b9c3f4) {
+TEST_F(GenEmitterTest, testb1839ee8ced911bb1ed1) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7702,7 +7878,7 @@ TEST_F(GenEmitterTest, test7592a1f019ddb2b9c3f4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test758d285e89a9de8070a7) {
+TEST_F(GenEmitterTest, test5899c9cd7e5a40077178) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7723,7 +7899,7 @@ TEST_F(GenEmitterTest, test758d285e89a9de8070a7) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5888499c52285a1b61de) {
+TEST_F(GenEmitterTest, test834f4e4a74c0ac6cd011) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7744,7 +7920,7 @@ TEST_F(GenEmitterTest, test5888499c52285a1b61de) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0115edbe7dd05e84f108) {
+TEST_F(GenEmitterTest, testd3aeee7524918cf227e7) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7765,7 +7941,7 @@ TEST_F(GenEmitterTest, test0115edbe7dd05e84f108) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testcbbbde92f35597a9e476) {
+TEST_F(GenEmitterTest, test7c587549aa0bbd6e2d53) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7786,7 +7962,7 @@ TEST_F(GenEmitterTest, testcbbbde92f35597a9e476) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa74ec451d449e2a89442) {
+TEST_F(GenEmitterTest, testc684ba00d512b6009b02) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7807,7 +7983,7 @@ TEST_F(GenEmitterTest, testa74ec451d449e2a89442) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test60faf9f5ac584b2d5a5f) {
+TEST_F(GenEmitterTest, testbe39189b638b9e0214dd) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -7830,7 +8006,7 @@ TEST_F(GenEmitterTest, test60faf9f5ac584b2d5a5f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa34103141c1aec5e8fa8) {
+TEST_F(GenEmitterTest, test80326240018ececfa606) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -7853,7 +8029,7 @@ TEST_F(GenEmitterTest, testa34103141c1aec5e8fa8) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa2a2b83cb72c22fc4ac2) {
+TEST_F(GenEmitterTest, test8a74653a376d02a2b6db) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -7876,7 +8052,7 @@ TEST_F(GenEmitterTest, testa2a2b83cb72c22fc4ac2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1f7ddcc3e5263ec983c5) {
+TEST_F(GenEmitterTest, testaa82cace20492eb66f60) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7899,7 +8075,7 @@ TEST_F(GenEmitterTest, test1f7ddcc3e5263ec983c5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test638672d9ee378d2b59ec) {
+TEST_F(GenEmitterTest, testcd4a1cdb4e2a24cae5c1) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7922,7 +8098,7 @@ TEST_F(GenEmitterTest, test638672d9ee378d2b59ec) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testffa1014d27bcb4821993) {
+TEST_F(GenEmitterTest, testa9ef5ab0eada79175f6a) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7945,7 +8121,7 @@ TEST_F(GenEmitterTest, testffa1014d27bcb4821993) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, tested2f908c978d8908cde2) {
+TEST_F(GenEmitterTest, test4060ba4b4f9b8193dcc4) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7968,7 +8144,7 @@ TEST_F(GenEmitterTest, tested2f908c978d8908cde2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test75c9a342b4ff9dcddd76) {
+TEST_F(GenEmitterTest, test6cd2fc4be08857654fa0) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -7991,7 +8167,7 @@ TEST_F(GenEmitterTest, test75c9a342b4ff9dcddd76) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb3cf7afef788a5168172) {
+TEST_F(GenEmitterTest, testadb892f6183cde28d9cc) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -8014,7 +8190,7 @@ TEST_F(GenEmitterTest, testb3cf7afef788a5168172) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test32c5731914c4f623f8cb) {
+TEST_F(GenEmitterTest, test5e830445d6cafe856b09) {
   Emitter out;
   out << BeginSeq;
   out << "foo";
@@ -8037,7 +8213,7 @@ TEST_F(GenEmitterTest, test32c5731914c4f623f8cb) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc4e4b895f5a3615e6c92) {
+TEST_F(GenEmitterTest, test16a7d875f6358bdd36ee) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -8058,7 +8234,7 @@ TEST_F(GenEmitterTest, testc4e4b895f5a3615e6c92) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test024f81ab1e1f375d06c8) {
+TEST_F(GenEmitterTest, test75b4342605739c88bc3f) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -8079,7 +8255,7 @@ TEST_F(GenEmitterTest, test024f81ab1e1f375d06c8) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf73efa1189e8e9bab50c) {
+TEST_F(GenEmitterTest, test7d42488f1a02d045d278) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -8100,7 +8276,7 @@ TEST_F(GenEmitterTest, testf73efa1189e8e9bab50c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test074882061d59e9381988) {
+TEST_F(GenEmitterTest, test9ce404764c03c6644c98) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8121,7 +8297,7 @@ TEST_F(GenEmitterTest, test074882061d59e9381988) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb81b19396e93a0e29157) {
+TEST_F(GenEmitterTest, testf9e413cd5405efcbd432) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8142,7 +8318,7 @@ TEST_F(GenEmitterTest, testb81b19396e93a0e29157) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testd4776155c00bb794aec9) {
+TEST_F(GenEmitterTest, test757c82faa95e2e507ee9) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8163,7 +8339,7 @@ TEST_F(GenEmitterTest, testd4776155c00bb794aec9) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0d3813f2674c45d54be7) {
+TEST_F(GenEmitterTest, testb73d72bf5de11964969f) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8184,7 +8360,7 @@ TEST_F(GenEmitterTest, test0d3813f2674c45d54be7) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testaee95b4f9b1161f6fd14) {
+TEST_F(GenEmitterTest, test3926f169b9dce6db913f) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8205,7 +8381,7 @@ TEST_F(GenEmitterTest, testaee95b4f9b1161f6fd14) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3f7b4338eae92e7a575f) {
+TEST_F(GenEmitterTest, test77b0cc7e618a09e0556d) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8226,7 +8402,7 @@ TEST_F(GenEmitterTest, test3f7b4338eae92e7a575f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test13a3de779d0756db2635) {
+TEST_F(GenEmitterTest, test6817f3e5da2ad8823025) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -8251,7 +8427,7 @@ TEST_F(GenEmitterTest, test13a3de779d0756db2635) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6cc39fc73a32cb816c15) {
+TEST_F(GenEmitterTest, test817ae48b78359d60888b) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -8276,7 +8452,7 @@ TEST_F(GenEmitterTest, test6cc39fc73a32cb816c15) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test33c4f4a8854d92180427) {
+TEST_F(GenEmitterTest, test9db1bf6278dd7de937e6) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -8301,7 +8477,7 @@ TEST_F(GenEmitterTest, test33c4f4a8854d92180427) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1e5612a63642939843fc) {
+TEST_F(GenEmitterTest, test4d5ca5c891442ddf7e84) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8326,7 +8502,7 @@ TEST_F(GenEmitterTest, test1e5612a63642939843fc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test774fccdfa9e9ea982df2) {
+TEST_F(GenEmitterTest, testfb6eb22f4bf080b9ac8b) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8351,7 +8527,7 @@ TEST_F(GenEmitterTest, test774fccdfa9e9ea982df2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testecdd8159ca0150ac9084) {
+TEST_F(GenEmitterTest, test3ce4b4ec89282d701502) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8376,7 +8552,7 @@ TEST_F(GenEmitterTest, testecdd8159ca0150ac9084) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8081bb348b980caf237e) {
+TEST_F(GenEmitterTest, testaf53ae415739a8812200) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8401,7 +8577,7 @@ TEST_F(GenEmitterTest, test8081bb348b980caf237e) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5dd9e7d23a6868f8da14) {
+TEST_F(GenEmitterTest, test72d3de78c6508500cb00) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8426,7 +8602,7 @@ TEST_F(GenEmitterTest, test5dd9e7d23a6868f8da14) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5cfe1848cf1771ee5a62) {
+TEST_F(GenEmitterTest, test6dd3d3703718b37fa2a4) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8451,7 +8627,7 @@ TEST_F(GenEmitterTest, test5cfe1848cf1771ee5a62) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test1a78787fd377fecaa98a) {
+TEST_F(GenEmitterTest, testc0beca9064d8081d45c1) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8476,7 +8652,7 @@ TEST_F(GenEmitterTest, test1a78787fd377fecaa98a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3659c5e006def41d781a) {
+TEST_F(GenEmitterTest, test14c55f7cd295d89763ca) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8501,7 +8677,7 @@ TEST_F(GenEmitterTest, test3659c5e006def41d781a) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testcffd2b80f823bc7b88bc) {
+TEST_F(GenEmitterTest, test72a93f054d9296607dff) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -8528,7 +8704,7 @@ TEST_F(GenEmitterTest, testcffd2b80f823bc7b88bc) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3646d0fd40876cdc7d90) {
+TEST_F(GenEmitterTest, testf0ac164fe5c38cc36922) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -8555,7 +8731,7 @@ TEST_F(GenEmitterTest, test3646d0fd40876cdc7d90) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testce3c9ef9e0c642d65146) {
+TEST_F(GenEmitterTest, test74efb7c560fd057d25ba) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -8582,7 +8758,7 @@ TEST_F(GenEmitterTest, testce3c9ef9e0c642d65146) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test666f93032b0297bd6f81) {
+TEST_F(GenEmitterTest, test43adceaba606a7f5013f) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8609,7 +8785,7 @@ TEST_F(GenEmitterTest, test666f93032b0297bd6f81) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7939e2697c6f4d8b91e9) {
+TEST_F(GenEmitterTest, test94160894abf5f0650ec9) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8636,7 +8812,7 @@ TEST_F(GenEmitterTest, test7939e2697c6f4d8b91e9) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3c153927514f7330e37d) {
+TEST_F(GenEmitterTest, testb77f1131af63dae91031) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8663,7 +8839,7 @@ TEST_F(GenEmitterTest, test3c153927514f7330e37d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test59b085e35e59562026da) {
+TEST_F(GenEmitterTest, test296aa575c385013e91f0) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8690,7 +8866,7 @@ TEST_F(GenEmitterTest, test59b085e35e59562026da) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test367f38cb15951f58f294) {
+TEST_F(GenEmitterTest, test339bddce4b70064141c4) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8717,7 +8893,7 @@ TEST_F(GenEmitterTest, test367f38cb15951f58f294) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testbb3feccd2d65d126c9e4) {
+TEST_F(GenEmitterTest, test991a70285cf143adb7fe) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8744,7 +8920,7 @@ TEST_F(GenEmitterTest, testbb3feccd2d65d126c9e4) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test4c5079959ae8b908aee3) {
+TEST_F(GenEmitterTest, test1b1ae70c1b5e7a1a2502) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8771,7 +8947,7 @@ TEST_F(GenEmitterTest, test4c5079959ae8b908aee3) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testfa82743c73819854df98) {
+TEST_F(GenEmitterTest, test02e58fb30f5a5b3616ec) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8798,7 +8974,7 @@ TEST_F(GenEmitterTest, testfa82743c73819854df98) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste354627da20a33a0ec48) {
+TEST_F(GenEmitterTest, testbdc3952445cad78094e2) {
   Emitter out;
   out << BeginSeq;
   out << BeginSeq;
@@ -8825,7 +9001,7 @@ TEST_F(GenEmitterTest, teste354627da20a33a0ec48) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test202a2c088ee50d08f182) {
+TEST_F(GenEmitterTest, test5d24f2ab8e24cb71d6c9) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -8848,7 +9024,7 @@ TEST_F(GenEmitterTest, test202a2c088ee50d08f182) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc7277e5979e7eaf4d016) {
+TEST_F(GenEmitterTest, test1ca2c58583cb7dd8a765) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -8871,7 +9047,7 @@ TEST_F(GenEmitterTest, testc7277e5979e7eaf4d016) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, teste2b7015fc02e6a5cb416) {
+TEST_F(GenEmitterTest, test6086aee45faab48750ad) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -8894,7 +9070,7 @@ TEST_F(GenEmitterTest, teste2b7015fc02e6a5cb416) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test30e30b89df20ef693d7b) {
+TEST_F(GenEmitterTest, testdac42de03b96b1207ec4) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -8917,7 +9093,7 @@ TEST_F(GenEmitterTest, test30e30b89df20ef693d7b) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5cab866f8818d65f5cfe) {
+TEST_F(GenEmitterTest, test10d18ea5e198359e218b) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -8940,7 +9116,7 @@ TEST_F(GenEmitterTest, test5cab866f8818d65f5cfe) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6c2133597d99c14720d0) {
+TEST_F(GenEmitterTest, test56218e461d6be3a18500) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -8963,7 +9139,7 @@ TEST_F(GenEmitterTest, test6c2133597d99c14720d0) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test243b3bb00a830d4d7c5c) {
+TEST_F(GenEmitterTest, test9acfd124b72471e34bbd) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -8986,7 +9162,7 @@ TEST_F(GenEmitterTest, test243b3bb00a830d4d7c5c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7fcdb9d71a9717069b9f) {
+TEST_F(GenEmitterTest, test2a1c3780a4dfaa43646e) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9009,7 +9185,7 @@ TEST_F(GenEmitterTest, test7fcdb9d71a9717069b9f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0ce9909c470ae5b1d3ae) {
+TEST_F(GenEmitterTest, test91e4c547fdab9e8b1c67) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9032,7 +9208,7 @@ TEST_F(GenEmitterTest, test0ce9909c470ae5b1d3ae) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testc077fd929177c75e3072) {
+TEST_F(GenEmitterTest, test3d7e8318208742fe4358) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9055,7 +9231,7 @@ TEST_F(GenEmitterTest, testc077fd929177c75e3072) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3b500af23a2b660e0330) {
+TEST_F(GenEmitterTest, test2e4a92f93d5f9d8c5fed) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -9082,7 +9258,7 @@ TEST_F(GenEmitterTest, test3b500af23a2b660e0330) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6d037fb77412a7b06f24) {
+TEST_F(GenEmitterTest, test9abf5d48ef7c6f2ed8a0) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -9109,7 +9285,7 @@ TEST_F(GenEmitterTest, test6d037fb77412a7b06f24) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testa153abd07d892e352889) {
+TEST_F(GenEmitterTest, testc3428819fe7cfe88cf10) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -9136,7 +9312,7 @@ TEST_F(GenEmitterTest, testa153abd07d892e352889) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf328e682c5d872fbb7fa) {
+TEST_F(GenEmitterTest, test8007ba3728b0fdbb0cb8) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9163,7 +9339,7 @@ TEST_F(GenEmitterTest, testf328e682c5d872fbb7fa) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb59b29e1f0612f8333bf) {
+TEST_F(GenEmitterTest, test6eedc1e3db4ceee9caf6) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9190,7 +9366,7 @@ TEST_F(GenEmitterTest, testb59b29e1f0612f8333bf) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test0d2de653c36fff7e875f) {
+TEST_F(GenEmitterTest, testd892f2048c7066c74b7e) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9217,7 +9393,7 @@ TEST_F(GenEmitterTest, test0d2de653c36fff7e875f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test18454002edb2d8ce5dff) {
+TEST_F(GenEmitterTest, test736430339c2a221b6d89) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9244,7 +9420,7 @@ TEST_F(GenEmitterTest, test18454002edb2d8ce5dff) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test3869b95fb927574c1cfa) {
+TEST_F(GenEmitterTest, test6d51f33adb9324f438d1) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9271,7 +9447,7 @@ TEST_F(GenEmitterTest, test3869b95fb927574c1cfa) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test5f9d2836779171944bd5) {
+TEST_F(GenEmitterTest, test00d50067643ed73a3f7f) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9298,7 +9474,7 @@ TEST_F(GenEmitterTest, test5f9d2836779171944bd5) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test00ca741ed5db71e7197c) {
+TEST_F(GenEmitterTest, test5fc029e9d46151d31a80) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9325,7 +9501,7 @@ TEST_F(GenEmitterTest, test00ca741ed5db71e7197c) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test63b2dee62c4656039c0d) {
+TEST_F(GenEmitterTest, test328542a5a4b65371d2c6) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9352,7 +9528,7 @@ TEST_F(GenEmitterTest, test63b2dee62c4656039c0d) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test6fca12b5bf897f3b933f) {
+TEST_F(GenEmitterTest, testf791a97db1c96e9f16c7) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9379,7 +9555,7 @@ TEST_F(GenEmitterTest, test6fca12b5bf897f3b933f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf047a3a7cd147dc69553) {
+TEST_F(GenEmitterTest, test44ac18a00d604391a169) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -9408,7 +9584,7 @@ TEST_F(GenEmitterTest, testf047a3a7cd147dc69553) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testf191f92a0c15e5624272) {
+TEST_F(GenEmitterTest, teste7ff269f6d95faa06abe) {
   Emitter out;
   out << Comment("comment");
   out << BeginSeq;
@@ -9437,7 +9613,7 @@ TEST_F(GenEmitterTest, testf191f92a0c15e5624272) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test874f18e2970f54d92f34) {
+TEST_F(GenEmitterTest, test8d056d159803415c2c85) {
   Emitter out;
   out << BeginSeq;
   out << Comment("comment");
@@ -9466,7 +9642,7 @@ TEST_F(GenEmitterTest, test874f18e2970f54d92f34) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7e94b62bc08fb63b7062) {
+TEST_F(GenEmitterTest, test47ef0ff3da945fda8680) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9495,7 +9671,7 @@ TEST_F(GenEmitterTest, test7e94b62bc08fb63b7062) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test50d40871122b935a2937) {
+TEST_F(GenEmitterTest, test1f981851e5a72a91614b) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9524,7 +9700,7 @@ TEST_F(GenEmitterTest, test50d40871122b935a2937) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb6a8d9eb931455caa603) {
+TEST_F(GenEmitterTest, test783be6c196784ca7ff30) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9553,7 +9729,7 @@ TEST_F(GenEmitterTest, testb6a8d9eb931455caa603) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test2f23bfff4a1d201b1f37) {
+TEST_F(GenEmitterTest, test217dcab50ef45ac6d344) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9582,7 +9758,7 @@ TEST_F(GenEmitterTest, test2f23bfff4a1d201b1f37) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test41ef23e040f0db2c06c2) {
+TEST_F(GenEmitterTest, testec71f98bc646a34c9327) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9611,7 +9787,7 @@ TEST_F(GenEmitterTest, test41ef23e040f0db2c06c2) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, testb8c7b55b5607df008fbe) {
+TEST_F(GenEmitterTest, test04595ac13c58c0740048) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9640,7 +9816,7 @@ TEST_F(GenEmitterTest, testb8c7b55b5607df008fbe) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test21daf188179c0c0c7bef) {
+TEST_F(GenEmitterTest, test18d724e2ff0f869e9947) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9669,7 +9845,7 @@ TEST_F(GenEmitterTest, test21daf188179c0c0c7bef) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8ca560e6b97325079e8f) {
+TEST_F(GenEmitterTest, test9f80798acafd4cfec0aa) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9698,7 +9874,7 @@ TEST_F(GenEmitterTest, test8ca560e6b97325079e8f) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test7fe0ce86b72c7c1ed7de) {
+TEST_F(GenEmitterTest, testeabc051f6366e0275232) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9727,7 +9903,7 @@ TEST_F(GenEmitterTest, test7fe0ce86b72c7c1ed7de) {
   Parse(out.c_str());
 }
 
-TEST_F(GenEmitterTest, test8cc25a6c1aea65ad7de1) {
+TEST_F(GenEmitterTest, teste33a98fb01ea45cc91dc) {
   Emitter out;
   out << BeginSeq;
   out << BeginMap;
@@ -9755,5 +9931,6 @@ TEST_F(GenEmitterTest, test8cc25a6c1aea65ad7de1) {
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(out.c_str());
 }
-}
-}
+
+}  // namespace
+}  // namespace YAML
diff --git a/lib/yamlcpp/test/integration/handler_spec_test.cpp b/lib/yamlcpp/test/integration/handler_spec_test.cpp
index d142a0d..fcb76d5 100644
--- a/lib/yamlcpp/test/integration/handler_spec_test.cpp
+++ b/lib/yamlcpp/test/integration/handler_spec_test.cpp
@@ -199,6 +199,7 @@ TEST_F(HandlerSpecTest, Ex2_10_SimpleAnchor) {
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "hr"));
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, EmitterStyle::Block));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "Mark McGwire"));
+  EXPECT_CALL(handler, OnAnchor(_, "SS"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "Sammy Sosa"));
   EXPECT_CALL(handler, OnSequenceEnd());
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "rbi"));
@@ -376,6 +377,7 @@ TEST_F(HandlerSpecTest, Ex2_24_GlobalTags) {
   EXPECT_CALL(handler, OnMapStart(_, "tag:clarkevans.com,2002:circle", 0,
                                   EmitterStyle::Block));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "center"));
+  EXPECT_CALL(handler, OnAnchor(_, "ORIGIN"));
   EXPECT_CALL(handler, OnMapStart(_, "?", 1, EmitterStyle::Flow));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "x"));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "73"));
@@ -456,6 +458,7 @@ TEST_F(HandlerSpecTest, Ex2_27_Invoice) {
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "date"));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "2001-01-23"));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "bill-to"));
+  EXPECT_CALL(handler, OnAnchor(_, "id001"));
   EXPECT_CALL(handler, OnMapStart(_, "?", 1, EmitterStyle::Block));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "given"));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "Chris"));
@@ -616,6 +619,7 @@ TEST_F(HandlerSpecTest, Ex5_6_NodePropertyIndicators) {
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "anchored"));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "!local", 1, "value"));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "alias"));
   EXPECT_CALL(handler, OnAlias(_, 1));
@@ -909,8 +913,10 @@ TEST_F(HandlerSpecTest, Ex6_22_GlobalTagPrefix) {
 TEST_F(HandlerSpecTest, Ex6_23_NodeProperties) {
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block));
+  EXPECT_CALL(handler, OnAnchor(_, "a1"));
   EXPECT_CALL(handler, OnScalar(_, "tag:yaml.org,2002:str", 1, "foo"));
   EXPECT_CALL(handler, OnScalar(_, "tag:yaml.org,2002:str", 0, "bar"));
+  EXPECT_CALL(handler, OnAnchor(_, "a2"));
   EXPECT_CALL(handler, OnScalar(_, "?", 2, "baz"));
   EXPECT_CALL(handler, OnAlias(_, 1));
   EXPECT_CALL(handler, OnMapEnd());
@@ -972,6 +978,7 @@ TEST_F(HandlerSpecTest, Ex6_29_NodeAnchors) {
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "First occurrence"));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "Value"));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "Second occurrence"));
   EXPECT_CALL(handler, OnAlias(_, 1));
@@ -984,10 +991,12 @@ TEST_F(HandlerSpecTest, Ex7_1_AliasNodes) {
   EXPECT_CALL(handler, OnDocumentStart(_));
   EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "First occurrence"));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 1, "Foo"));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "Second occurrence"));
   EXPECT_CALL(handler, OnAlias(_, 1));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "Override anchor"));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "?", 2, "Bar"));
   EXPECT_CALL(handler, OnScalar(_, "?", 0, "Reuse anchor"));
   EXPECT_CALL(handler, OnAlias(_, 2));
@@ -1307,6 +1316,7 @@ TEST_F(HandlerSpecTest, Ex7_24_FlowNodes) {
   EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, EmitterStyle::Block));
   EXPECT_CALL(handler, OnScalar(_, "tag:yaml.org,2002:str", 0, "a"));
   EXPECT_CALL(handler, OnScalar(_, "!", 0, "b"));
+  EXPECT_CALL(handler, OnAnchor(_, "anchor"));
   EXPECT_CALL(handler, OnScalar(_, "!", 1, "c"));
   EXPECT_CALL(handler, OnAlias(_, 1));
   EXPECT_CALL(handler, OnScalar(_, "tag:yaml.org,2002:str", 0, ""));
@@ -1607,5 +1617,5 @@ TEST_F(HandlerSpecTest, Ex8_22_BlockCollectionNodes) {
   EXPECT_CALL(handler, OnDocumentEnd());
   Parse(ex8_22);
 }
-}
-}
+}  // namespace
+}  // namespace YAML
diff --git a/lib/yamlcpp/test/integration/load_node_test.cpp b/lib/yamlcpp/test/integration/load_node_test.cpp
index 2885084..4f4f28e 100644
--- a/lib/yamlcpp/test/integration/load_node_test.cpp
+++ b/lib/yamlcpp/test/integration/load_node_test.cpp
@@ -55,6 +55,26 @@ TEST(LoadNodeTest, Binary) {
             node[1].as<Binary>());
 }
 
+TEST(LoadNodeTest, BinaryWithWhitespaces) {
+  Node node = Load(
+      "binaryText: !binary |-\n"
+      "  TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieS\n"
+      "  B0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIG\n"
+      "  x1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbi\n"
+      "  B0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZG\n"
+      "  dlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS\n"
+      "  4K");
+  EXPECT_EQ(Binary(reinterpret_cast<const unsigned char*>(
+                       "Man is distinguished, not only by his reason, "
+                       "but by this singular passion from other "
+                       "animals, which is a lust of the mind, that by "
+                       "a perseverance of delight in the continued and "
+                       "indefatigable generation of knowledge, exceeds "
+                       "the short vehemence of any carnal pleasure.\n"),
+                   270),
+            node["binaryText"].as<Binary>());
+}
+
 TEST(LoadNodeTest, IterateSequence) {
   Node node = Load("[1, 3, 5, 7]");
   int seq[] = {1, 3, 5, 7};
@@ -230,7 +250,7 @@ TEST(NodeTest, LoadTildeAsNull) {
   Node node = Load("~");
   ASSERT_TRUE(node.IsNull());
 }
-
+    
 TEST(NodeTest, LoadTagWithParenthesis) {
     Node node = Load("!Complex(Tag) foo");
     EXPECT_EQ(node.Tag(), "!Complex(Tag)");
diff --git a/lib/yamlcpp/test/mock_event_handler.h b/lib/yamlcpp/test/mock_event_handler.h
index 49d1f0c..2c1d15a 100644
--- a/lib/yamlcpp/test/mock_event_handler.h
+++ b/lib/yamlcpp/test/mock_event_handler.h
@@ -22,5 +22,6 @@ class MockEventHandler : public EventHandler {
   MOCK_METHOD4(OnMapStart, void(const Mark&, const std::string&, anchor_t,
                                 EmitterStyle::value));
   MOCK_METHOD0(OnMapEnd, void());
+  MOCK_METHOD2(OnAnchor, void(const Mark&, const std::string&));
 };
-}
+}  // namespace YAML
diff --git a/lib/yamlcpp/test/node/node_test.cpp b/lib/yamlcpp/test/node/node_test.cpp
index 485ad09..18234db 100644
--- a/lib/yamlcpp/test/node/node_test.cpp
+++ b/lib/yamlcpp/test/node/node_test.cpp
@@ -1,10 +1,10 @@
+#include "yaml-cpp/node/node.h"
 #include "yaml-cpp/emitter.h"
+#include "yaml-cpp/node/convert.h"
+#include "yaml-cpp/node/detail/impl.h"
 #include "yaml-cpp/node/emit.h"
-#include "yaml-cpp/node/node.h"
 #include "yaml-cpp/node/impl.h"
-#include "yaml-cpp/node/convert.h"
 #include "yaml-cpp/node/iterator.h"
-#include "yaml-cpp/node/detail/impl.h"
 
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
@@ -47,6 +47,30 @@ TEST(NodeTest, SimpleAppendSequence) {
   EXPECT_TRUE(node.IsSequence());
 }
 
+TEST(NodeTest, SequenceElementRemoval) {
+  Node node;
+  node[0] = "a";
+  node[1] = "b";
+  node[2] = "c";
+  node.remove(1);
+  EXPECT_TRUE(node.IsSequence());
+  EXPECT_EQ(2, node.size());
+  EXPECT_EQ("a", node[0].as<std::string>());
+  EXPECT_EQ("c", node[1].as<std::string>());
+}
+
+TEST(NodeTest, SequenceLastElementRemoval) {
+  Node node;
+  node[0] = "a";
+  node[1] = "b";
+  node[2] = "c";
+  node.remove(2);
+  EXPECT_TRUE(node.IsSequence());
+  EXPECT_EQ(2, node.size());
+  EXPECT_EQ("a", node[0].as<std::string>());
+  EXPECT_EQ("b", node[1].as<std::string>());
+}
+
 TEST(NodeTest, MapElementRemoval) {
   Node node;
   node["foo"] = "bar";
@@ -54,6 +78,16 @@ TEST(NodeTest, MapElementRemoval) {
   EXPECT_TRUE(!node["foo"]);
 }
 
+TEST(NodeTest, MapIntegerElementRemoval) {
+  Node node;
+  node[1] = "hello";
+  node[2] = 'c';
+  node["foo"] = "bar";
+  EXPECT_TRUE(node.IsMap());
+  node.remove(1);
+  EXPECT_TRUE(node.IsMap());
+}
+
 TEST(NodeTest, SimpleAssignSequence) {
   Node node;
   node[0] = 10;
@@ -106,6 +140,14 @@ TEST(NodeTest, RemoveUnassignedNode) {
   EXPECT_EQ(0, node.size());
 }
 
+TEST(NodeTest, RemoveUnassignedNodeFromMap) {
+  Node node(NodeType::Map);
+  Node n;
+  node[n];
+  node.remove(n);
+  EXPECT_EQ(0, node.size());
+}
+
 TEST(NodeTest, MapForceInsert) {
   Node node;
   Node k1("k1");
@@ -349,7 +391,13 @@ TEST(NodeTest, AutoBoolConversion) {
   EXPECT_TRUE(!!node["foo"]);
 }
 
-TEST(NodeTest, FloatingPrecision) {
+TEST(NodeTest, FloatingPrecisionFloat) {
+  const float x = 0.123456789;
+  Node node = Node(x);
+  EXPECT_EQ(x, node.as<float>());
+}
+
+TEST(NodeTest, FloatingPrecisionDouble) {
   const double x = 0.123456789;
   Node node = Node(x);
   EXPECT_EQ(x, node.as<double>());
@@ -410,108 +458,108 @@ class NodeEmitterTest : public ::testing::Test {
 TEST_F(NodeEmitterTest, SimpleFlowSeqNode) {
   Node node;
   node.SetStyle(EmitterStyle::Flow);
-  node.push_back(1.01);
-  node.push_back(2.01);
-  node.push_back(3.01);
+  node.push_back(1.5);
+  node.push_back(2.25);
+  node.push_back(3.125);
 
-  ExpectOutput("[1.01, 2.01, 3.01]", node);
+  ExpectOutput("[1.5, 2.25, 3.125]", node);
 }
 
 TEST_F(NodeEmitterTest, NestFlowSeqNode) {
   Node node, cell0, cell1;
 
-  cell0.push_back(1.01);
-  cell0.push_back(2.01);
-  cell0.push_back(3.01);
+  cell0.push_back(1.5);
+  cell0.push_back(2.25);
+  cell0.push_back(3.125);
 
-  cell1.push_back(4.01);
-  cell1.push_back(5.01);
-  cell1.push_back(6.01);
+  cell1.push_back(4.5);
+  cell1.push_back(5.25);
+  cell1.push_back(6.125);
 
   node.SetStyle(EmitterStyle::Flow);
   node.push_back(cell0);
   node.push_back(cell1);
 
-  ExpectOutput("[[1.01, 2.01, 3.01], [4.01, 5.01, 6.01]]", node);
+  ExpectOutput("[[1.5, 2.25, 3.125], [4.5, 5.25, 6.125]]", node);
 }
 
 TEST_F(NodeEmitterTest, MixBlockFlowSeqNode) {
   Node node, cell0, cell1;
 
   cell0.SetStyle(EmitterStyle::Flow);
-  cell0.push_back(1.01);
-  cell0.push_back(2.01);
-  cell0.push_back(3.01);
+  cell0.push_back(1.5);
+  cell0.push_back(2.25);
+  cell0.push_back(3.125);
 
-  cell1.push_back(4.01);
-  cell1.push_back(5.01);
-  cell1.push_back(6.01);
+  cell1.push_back(4.5);
+  cell1.push_back(5.25);
+  cell1.push_back(6.125);
 
   node.SetStyle(EmitterStyle::Block);
   node.push_back(cell0);
   node.push_back(cell1);
 
-  ExpectOutput("- [1.01, 2.01, 3.01]\n-\n  - 4.01\n  - 5.01\n  - 6.01", node);
+  ExpectOutput("- [1.5, 2.25, 3.125]\n-\n  - 4.5\n  - 5.25\n  - 6.125", node);
 }
 
 TEST_F(NodeEmitterTest, NestBlockFlowMapListNode) {
   Node node, mapNode, blockNode;
 
-  node.push_back(1.01);
-  node.push_back(2.01);
-  node.push_back(3.01);
+  node.push_back(1.5);
+  node.push_back(2.25);
+  node.push_back(3.125);
 
   mapNode.SetStyle(EmitterStyle::Flow);
   mapNode["position"] = node;
 
-  blockNode.push_back(1.01);
+  blockNode.push_back(1.0625);
   blockNode.push_back(mapNode);
 
-  ExpectOutput("- 1.01\n- {position: [1.01, 2.01, 3.01]}", blockNode);
+  ExpectOutput("- 1.0625\n- {position: [1.5, 2.25, 3.125]}", blockNode);
 }
 
 TEST_F(NodeEmitterTest, NestBlockMixMapListNode) {
   Node node, mapNode, blockNode;
 
-  node.push_back(1.01);
-  node.push_back(2.01);
-  node.push_back(3.01);
+  node.push_back(1.5);
+  node.push_back(2.25);
+  node.push_back(3.125);
 
   mapNode.SetStyle(EmitterStyle::Flow);
   mapNode["position"] = node;
 
-  blockNode["scalar"] = 1.01;
+  blockNode["scalar"] = 1.0625;
   blockNode["object"] = mapNode;
 
   ExpectAnyOutput(blockNode,
-                  "scalar: 1.01\nobject: {position: [1.01, 2.01, 3.01]}",
-                  "object: {position: [1.01, 2.01, 3.01]}\nscalar: 1.01");
+                  "scalar: 1.0625\nobject: {position: [1.5, 2.25, 3.125]}",
+                  "object: {position: [1.5, 2.25, 3.125]}\nscalar: 1.5");
 }
 
 TEST_F(NodeEmitterTest, NestBlockMapListNode) {
   Node node, mapNode;
 
-  node.push_back(1.01);
-  node.push_back(2.01);
-  node.push_back(3.01);
+  node.push_back(1.5);
+  node.push_back(2.25);
+  node.push_back(3.125);
 
   mapNode.SetStyle(EmitterStyle::Block);
   mapNode["position"] = node;
 
-  ExpectOutput("position:\n  - 1.01\n  - 2.01\n  - 3.01", mapNode);
+  ExpectOutput("position:\n  - 1.5\n  - 2.25\n  - 3.125", mapNode);
 }
 
 TEST_F(NodeEmitterTest, NestFlowMapListNode) {
   Node node, mapNode;
 
-  node.push_back(1.01);
-  node.push_back(2.01);
-  node.push_back(3.01);
+  node.push_back(1.5);
+  node.push_back(2.25);
+  node.push_back(3.125);
 
   mapNode.SetStyle(EmitterStyle::Flow);
   mapNode["position"] = node;
 
-  ExpectOutput("{position: [1.01, 2.01, 3.01]}", mapNode);
+  ExpectOutput("{position: [1.5, 2.25, 3.125]}", mapNode);
 }
 }
 }
diff --git a/lib/yamlcpp/test/regex_test.cpp b/lib/yamlcpp/test/regex_test.cpp
index 7589d2e..658db9e 100644
--- a/lib/yamlcpp/test/regex_test.cpp
+++ b/lib/yamlcpp/test/regex_test.cpp
@@ -1,6 +1,6 @@
-#include "gtest/gtest.h"
 #include "regex_yaml.h"
 #include "stream.h"
+#include "gtest/gtest.h"
 
 using YAML::RegEx;
 using YAML::Stream;
@@ -106,8 +106,8 @@ TEST(RegExTest, OperatorOr) {
     for (int j = i + 1; j < 128; ++j) {
       auto iStr = std::string(1, char(i));
       auto jStr = std::string(1, char(j));
-      RegEx ex1 = RegEx(iStr) || RegEx(jStr);
-      RegEx ex2 = RegEx(jStr) || RegEx(iStr);
+      RegEx ex1 = RegEx(iStr) | RegEx(jStr);
+      RegEx ex2 = RegEx(jStr) | RegEx(iStr);
 
       for (int k = MIN_CHAR; k < 128; ++k) {
         auto str = std::string(1, char(k));
@@ -128,8 +128,8 @@ TEST(RegExTest, OperatorOr) {
 }
 
 TEST(RegExTest, OperatorOrShortCircuits) {
-  RegEx ex1 = RegEx(std::string("aaaa")) || RegEx(std::string("aa"));
-  RegEx ex2 = RegEx(std::string("aa")) || RegEx(std::string("aaaa"));
+  RegEx ex1 = RegEx(std::string("aaaa")) | RegEx(std::string("aa"));
+  RegEx ex2 = RegEx(std::string("aa")) | RegEx(std::string("aaaa"));
 
   EXPECT_TRUE(ex1.Matches(std::string("aaaaa")));
   EXPECT_EQ(4, ex1.Match(std::string("aaaaa")));
@@ -139,13 +139,13 @@ TEST(RegExTest, OperatorOrShortCircuits) {
 }
 
 TEST(RegExTest, OperatorAnd) {
-  RegEx emptySet = RegEx('a') && RegEx();
+  RegEx emptySet = RegEx('a') & RegEx();
   EXPECT_FALSE(emptySet.Matches(std::string("a")));
 }
 
 TEST(RegExTest, OperatorAndShortCircuits) {
-  RegEx ex1 = RegEx(std::string("aaaa")) && RegEx(std::string("aa"));
-  RegEx ex2 = RegEx(std::string("aa")) && RegEx(std::string("aaaa"));
+  RegEx ex1 = RegEx(std::string("aaaa")) & RegEx(std::string("aa"));
+  RegEx ex2 = RegEx(std::string("aa")) & RegEx(std::string("aaaa"));
 
   EXPECT_TRUE(ex1.Matches(std::string("aaaaa")));
   EXPECT_EQ(4, ex1.Match(std::string("aaaaa")));
@@ -174,4 +174,4 @@ TEST(RegExTest, StringOr) {
 
   EXPECT_EQ(1, ex.Match(str));
 }
-}
+}  // namespace
diff --git a/lib/yamlcpp/util/CMakeLists.txt b/lib/yamlcpp/util/CMakeLists.txt
index 2286627..09dafa2 100644
--- a/lib/yamlcpp/util/CMakeLists.txt
+++ b/lib/yamlcpp/util/CMakeLists.txt
@@ -1,14 +1,26 @@
+cmake_minimum_required(VERSION 3.5)
+
 add_sources(parse.cpp)
 add_executable(parse parse.cpp)
+set_target_properties(parse PROPERTIES
+    CXX_STANDARD 11
+    CXX_STANDARD_REQUIRED ON
+)
 target_link_libraries(parse yaml-cpp)
-set_target_properties(parse PROPERTIES COMPILE_FLAGS "-std=c++11")
 
 add_sources(sandbox.cpp)
 add_executable(sandbox sandbox.cpp)
+set_target_properties(sandbox PROPERTIES
+    CXX_STANDARD 11
+    CXX_STANDARD_REQUIRED ON
+)
 target_link_libraries(sandbox yaml-cpp)
-set_target_properties(sandbox PROPERTIES COMPILE_FLAGS "-std=c++11")
 
 add_sources(read.cpp)
 add_executable(read read.cpp)
+set_target_properties(read PROPERTIES
+    CXX_STANDARD 11
+    CXX_STANDARD_REQUIRED ON
+)
 target_link_libraries(read yaml-cpp)
-set_target_properties(read PROPERTIES COMPILE_FLAGS "-std=c++11")
+


[trafficserver] 04/04: Fixed gcc7 issue with yaml-cpp 0.6.3

Posted by zw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit 73a6ecefd105b6113a0f9e968b01de0d1e541049
Author: Bryan Call <bc...@apache.org>
AuthorDate: Wed Nov 13 15:43:46 2019 -0800

    Fixed gcc7 issue with yaml-cpp 0.6.3
    
    (cherry picked from commit 8857fa37f2cb1d985eff34535bd5eac4e0f91a01)
---
 plugins/experimental/cookie_remap/cookie_remap.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/plugins/experimental/cookie_remap/cookie_remap.cc b/plugins/experimental/cookie_remap/cookie_remap.cc
index b5eff3e..9fb6991 100644
--- a/plugins/experimental/cookie_remap/cookie_remap.cc
+++ b/plugins/experimental/cookie_remap/cookie_remap.cc
@@ -873,10 +873,10 @@ TSRemapNewInstance(int argc, char *argv[], void **ih, char *errbuf, int errbuf_s
       }
 
       for (YAML::const_iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2) {
-        const YAML::Node &first  = it2->first;
-        const YAML::Node &second = it2->second;
+        const YAML::Node first  = it2->first;
+        const YAML::Node second = it2->second;
 
-        if (second.Type() != YAML::NodeType::Scalar) {
+        if (second.IsScalar() == false) {
           const string reason = "All op nodes must be of type scalar";
           TSError("Invalid YAML Configuration format for cookie_remap: %s, reason: %s", filename.c_str(), reason.c_str());
           return TS_ERROR;


[trafficserver] 02/04: Re-order READ_REQUEST_ HDR_HOOK and PRE_REMAP_HOOK

Posted by zw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit 8978e64d26b0fcc92192444c6adb502a95c3a58c
Author: Miles Libbey <ml...@apache.org>
AuthorDate: Tue Nov 12 11:38:19 2019 -0800

    Re-order READ_REQUEST_ HDR_HOOK and PRE_REMAP_HOOK
    
    #5795 notes that READ_REQUEST_HDR_HOOK and READ_REQUEST_PRE_REMAP_HOOK
    in the diagram are reversed from actual.
    The state diagram in
    https://docs.trafficserver.apache.org/en/8.0.x/developer-guide/plugins/hooks-and-transactions/index.en.html#http-transaction-state-diagram
    show that READ_REQUEST is before
    PRE_REMAP.
    
    (cherry picked from commit fe0d476ec04678ae5bda6ae2a24cd5985a9dd882)
---
 doc/admin-guide/plugins/header_rewrite.en.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/admin-guide/plugins/header_rewrite.en.rst b/doc/admin-guide/plugins/header_rewrite.en.rst
index b74e471..84ce216 100644
--- a/doc/admin-guide/plugins/header_rewrite.en.rst
+++ b/doc/admin-guide/plugins/header_rewrite.en.rst
@@ -880,7 +880,7 @@ one forces the beginning of a new ruleset.
      node[shape=record];
 
      Client[height=4, label="{ Client|{<p1>|<p2>} }"];
-     ATS[height=4, fontsize=10,label="{ {{<clientside0>Global:\nREAD_REQUEST_PRE_REMAP_HOOK|<clientside01>Global:\nREAD_REQUEST_HDR_HOOK\nRemap rule:\nREMAP_PSEUDO_HOOK}|<clientside1>SEND_RESPONSE_HDR_HOOK}|ATS |{<originside0>SEND_REQUEST_HDR_HOOK|<originside1>READ_RESPONSE_HDR_HOOK} }",xlabel="ATS"];
+     ATS[height=4, fontsize=10,label="{ {{<clientside0>Global:\nREAD_REQUEST_HDR_HOOK\nREAD_REQUEST_PRE_REMAP_HOOK|<clientside01>Remap rule:\nREMAP_PSEUDO_HOOK}|<clientside1>SEND_RESPONSE_HDR_HOOK}|ATS |{<originside0>SEND_REQUEST_HDR_HOOK|<originside1>READ_RESPONSE_HDR_HOOK} }",xlabel="ATS"];
      Origin[height=4, label="{ {<request>|<response>}|Origin }"];
 
      Client:p1 -> ATS:clientside0 [ label = "Request" ];


[trafficserver] 01/04: tslua: Exposes set/get method for server request objects

Posted by zw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit 23d6b2f2e4ae13f6562f1c28c0290de54b1ab5a3
Author: Randall Meyer <rr...@apache.org>
AuthorDate: Thu Nov 7 16:06:39 2019 -0800

    tslua: Exposes set/get method for server request objects
    
    (cherry picked from commit 97692a552c8ad72a1cc8a890cdf11e53d3a6a1bc)
---
 doc/admin-guide/plugins/lua.en.rst  | 42 ++++++++++++++++++++++++++++
 plugins/lua/ts_lua_server_request.c | 55 ++++++++++++++++++++++++++++++++++++-
 2 files changed, 96 insertions(+), 1 deletion(-)

diff --git a/doc/admin-guide/plugins/lua.en.rst b/doc/admin-guide/plugins/lua.en.rst
index dd0d197..5362435 100644
--- a/doc/admin-guide/plugins/lua.en.rst
+++ b/doc/admin-guide/plugins/lua.en.rst
@@ -1903,6 +1903,48 @@ ts.server_request.set_url_scheme
 
 :ref:`TOP <admin-plugins-ts-lua>`
 
+ts.server_request.get_method
+----------------------------
+**syntax:** *ts.server_request.get_method()*
+
+**context:** function @ TS_LUA_HOOK_SEND_REQUEST_HDR hook point or later
+
+**description:** This function can be used to retrieve the current server request's method name. String like "GET" or "POST" is returned.
+
+Here is an example:
+
+::
+
+    function send_request()
+        local method = ts.server_request.get_method()
+        ts.debug(method)
+    end
+
+    function do_remap()
+        ts.hook(TS_LUA_HOOK_SEND_REQUEST_HDR, send_request)
+        return 0
+    end
+
+Then ``HEAD /`` will yield the output:
+
+``HEAD``
+
+:ref:`TOP <admin-plugins-ts-lua>`
+
+ts.server_request.set_method
+----------------------------
+**syntax:** *ts.server_request.set_method()*
+
+**context:** function @ TS_LUA_HOOK_SEND_REQUEST_HDR hook point or later
+
+**description:** This function can be used to override the current server request's method with METHOD_NAME.
+
+::
+
+    ts.server_request.set_method('HEAD')
+
+:ref:`TOP <admin-plugins-ts-lua>`
+
 ts.server_response.get_status
 -----------------------------
 **syntax:** *status = ts.server_response.get_status()*
diff --git a/plugins/lua/ts_lua_server_request.c b/plugins/lua/ts_lua_server_request.c
index c927217..2aa7e45 100644
--- a/plugins/lua/ts_lua_server_request.c
+++ b/plugins/lua/ts_lua_server_request.c
@@ -51,6 +51,7 @@ static void ts_lua_inject_server_request_uri_api(lua_State *L);
 static void ts_lua_inject_server_request_uri_args_api(lua_State *L);
 static void ts_lua_inject_server_request_uri_params_api(lua_State *L);
 static void ts_lua_inject_server_request_url_api(lua_State *L);
+static void ts_lua_inject_server_request_method_api(lua_State *L);
 
 static int ts_lua_server_request_header_get(lua_State *L);
 static int ts_lua_server_request_header_set(lua_State *L);
@@ -63,6 +64,8 @@ static int ts_lua_server_request_set_uri_args(lua_State *L);
 static int ts_lua_server_request_get_uri_args(lua_State *L);
 static int ts_lua_server_request_set_uri_params(lua_State *L);
 static int ts_lua_server_request_get_uri_params(lua_State *L);
+static int ts_lua_server_request_get_method(lua_State *L);
+static int ts_lua_server_request_set_method(lua_State *L);
 static int ts_lua_server_request_get_url_host(lua_State *L);
 static int ts_lua_server_request_set_url_host(lua_State *L);
 static int ts_lua_server_request_get_url_scheme(lua_State *L);
@@ -87,7 +90,7 @@ ts_lua_inject_server_request_api(lua_State *L)
   ts_lua_inject_server_request_headers_api(L);
   ts_lua_inject_server_request_get_header_size_api(L);
   ts_lua_inject_server_request_get_body_size_api(L);
-
+  ts_lua_inject_server_request_method_api(L);
   ts_lua_inject_server_request_uri_api(L);
   ts_lua_inject_server_request_uri_args_api(L);
   ts_lua_inject_server_request_uri_params_api(L);
@@ -924,3 +927,53 @@ ts_lua_server_request_server_addr_set_outgoing_addr(lua_State *L)
 
   return 0;
 }
+
+static void
+ts_lua_inject_server_request_method_api(lua_State *L)
+{
+  lua_pushcfunction(L, ts_lua_server_request_get_method);
+  lua_setfield(L, -2, "get_method");
+
+  lua_pushcfunction(L, ts_lua_server_request_set_method);
+  lua_setfield(L, -2, "set_method");
+}
+
+static int
+ts_lua_server_request_get_method(lua_State *L)
+{
+  const char *method;
+  int method_len;
+
+  ts_lua_http_ctx *http_ctx;
+
+  GET_HTTP_CONTEXT(http_ctx, L);
+
+  method = TSHttpHdrMethodGet(http_ctx->server_request_bufp, http_ctx->server_request_hdrp, &method_len);
+
+  if (method && method_len) {
+    lua_pushlstring(L, method, method_len);
+  } else {
+    lua_pushnil(L);
+  }
+
+  return 1;
+}
+
+static int
+ts_lua_server_request_set_method(lua_State *L)
+{
+  const char *method;
+  size_t method_len;
+
+  ts_lua_http_ctx *http_ctx;
+
+  GET_HTTP_CONTEXT(http_ctx, L);
+
+  method = luaL_checklstring(L, 1, &method_len);
+
+  if (method) {
+    TSHttpHdrMethodSet(http_ctx->server_request_bufp, http_ctx->server_request_hdrp, method, method_len);
+  }
+
+  return 0;
+}