private void EmitNode(bool root, bool sequence, bool mapping, bool simpleKey) {
_mappingContext = mapping;
if (_event is AliasEvent) {
EmitAlias();
} else if (_event is ScalarEvent || _event is CollectionStartEvent) {
ProcessAnchor("&");
ProcessTag(simpleKey);
if (_event is ScalarEvent) {
EmitScalar(simpleKey);
} else if (_event is SequenceStartEvent) {
if (_flowLevel != 0 || _canonical || ((SequenceStartEvent)_event).FlowStyle == FlowStyle.Inline || checkEmptySequence()) {
EmitFlowSequence();
} else {
EmitBlockSequence();
}
} else if (_event is MappingStartEvent) {
if (_flowLevel != 0 || _canonical || ((MappingStartEvent)_event).FlowStyle == FlowStyle.Inline || checkEmptyMapping()) {
EmitFlowMapping();
} else {
EmitBlockMapping();
}
}
} else {
throw new EmitterException("Emited NodeEvent, but got " + _event);
}
}