private void SetAttributes()

in src/StructuredLogger/Serialization/Binary/BuildLogReader.cs [142:274]


        private void SetAttributes(BaseNode node)
        {
            var metadata = node as Metadata;
            if (metadata != null)
            {
                metadata.Name = Dequeue();
                metadata.Value = Dequeue();
                return;
            }

            var property = node as Property;
            if (property != null)
            {
                property.Name = Dequeue();
                property.Value = Dequeue();
                return;
            }

            var message = node as Message;
            if (message != null)
            {
                message.IsLowRelevance = Serialization.GetBoolean(Dequeue());
                message.Timestamp = Serialization.GetDateTime(Dequeue());
                message.Text = Dequeue();
                return;
            }

            var folder = node as Folder;
            if (folder != null)
            {
                folder.IsLowRelevance = Serialization.GetBoolean(Dequeue());
                return;
            }

            var namedNode = node as NamedNode;
            if (namedNode != null)
            {
                namedNode.Name = Dequeue();
            }

            var textNode = node as TextNode;
            if (textNode != null)
            {
                textNode.Text = Dequeue();
            }

            var timedNode = node as TimedNode;
            if (timedNode != null)
            {
                timedNode.StartTime = Serialization.GetDateTime(Dequeue());
                timedNode.EndTime = Serialization.GetDateTime(Dequeue());
                if (formatSupportsTimedNodeId)
                {
                    timedNode.NodeId = Serialization.GetInteger(Dequeue());
                }
            }

            var task = node as Task;
            if (task != null)
            {
                task.FromAssembly = Dequeue();
                task.CommandLineArguments = Dequeue();
                if (formatSupportsSourceFiles)
                {
                    task.SourceFilePath = Dequeue();
                }

                return;
            }

            var target = node as Target;
            if (target != null)
            {
                target.DependsOnTargets = Dequeue();
                target.IsLowRelevance = Serialization.GetBoolean(Dequeue());
                if (formatSupportsSourceFiles)
                {
                    target.SourceFilePath = Dequeue();
                }

                return;
            }

            var diagnostic = node as AbstractDiagnostic;
            if (diagnostic != null)
            {
                diagnostic.Code = Dequeue();
                diagnostic.File = Dequeue();
                diagnostic.LineNumber = Serialization.GetInteger(Dequeue());
                diagnostic.ColumnNumber = Serialization.GetInteger(Dequeue());
                diagnostic.EndLineNumber = Serialization.GetInteger(Dequeue());
                diagnostic.EndColumnNumber = Serialization.GetInteger(Dequeue());
                diagnostic.ProjectFile = Dequeue();
                return;
            }

            var project = node as Project;
            if (project != null)
            {
                project.ProjectFile = Dequeue();
                return;
            }

            var build = node as Build;
            if (build != null)
            {
                build.Succeeded = Serialization.GetBoolean(Dequeue());
                build.IsAnalyzed = Serialization.GetBoolean(Dequeue());
                return;
            }

            var import = node as Import;
            if (import != null)
            {
                import.ProjectFilePath = Dequeue();
                import.ImportedProjectFilePath = Dequeue();
                import.Line = Serialization.GetInteger(Dequeue());
                import.Column = Serialization.GetInteger(Dequeue());
                import.IsLowRelevance = Serialization.GetBoolean(Dequeue());
                return;
            }

            var noImport = node as NoImport;
            if (noImport != null)
            {
                noImport.ProjectFilePath = Dequeue();
                noImport.ImportedFileSpec = Dequeue();
                noImport.Line = Serialization.GetInteger(Dequeue());
                noImport.Column = Serialization.GetInteger(Dequeue());
                noImport.IsLowRelevance = Serialization.GetBoolean(Dequeue());
                return;
            }
        }