/// <summary>
        /// Visits and rewrites a node in the Sarif object model.
        /// </summary>
        /// <param name="node">
        /// The node to rewrite.
        /// </param>
        /// <returns>
        /// A rewritten instance of the node.
        /// </returns>
        public virtual object VisitActual(ISarifNodeVersionOne node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            switch (node.SarifNodeKindVersionOne)
            {
            case SarifNodeKindVersionOne.AnnotatedCodeLocationVersionOne:
                return(VisitAnnotatedCodeLocationVersionOne((AnnotatedCodeLocationVersionOne)node));

            case SarifNodeKindVersionOne.AnnotationVersionOne:
                return(VisitAnnotationVersionOne((AnnotationVersionOne)node));

            case SarifNodeKindVersionOne.CodeFlowVersionOne:
                return(VisitCodeFlowVersionOne((CodeFlowVersionOne)node));

            case SarifNodeKindVersionOne.ExceptionDataVersionOne:
                return(VisitExceptionDataVersionOne((ExceptionDataVersionOne)node));

            case SarifNodeKindVersionOne.FileChangeVersionOne:
                return(VisitFileChangeVersionOne((FileChangeVersionOne)node));

            case SarifNodeKindVersionOne.FileDataVersionOne:
                return(VisitFileDataVersionOne((FileDataVersionOne)node));

            case SarifNodeKindVersionOne.FixVersionOne:
                return(VisitFixVersionOne((FixVersionOne)node));

            case SarifNodeKindVersionOne.FormattedRuleMessageVersionOne:
                return(VisitFormattedRuleMessageVersionOne((FormattedRuleMessageVersionOne)node));

            case SarifNodeKindVersionOne.HashVersionOne:
                return(VisitHashVersionOne((HashVersionOne)node));

            case SarifNodeKindVersionOne.InvocationVersionOne:
                return(VisitInvocationVersionOne((InvocationVersionOne)node));

            case SarifNodeKindVersionOne.LocationVersionOne:
                return(VisitLocationVersionOne((LocationVersionOne)node));

            case SarifNodeKindVersionOne.LogicalLocationVersionOne:
                return(VisitLogicalLocationVersionOne((LogicalLocationVersionOne)node));

            case SarifNodeKindVersionOne.NotificationVersionOne:
                return(VisitNotificationVersionOne((NotificationVersionOne)node));

            case SarifNodeKindVersionOne.PhysicalLocationVersionOne:
                return(VisitPhysicalLocationVersionOne((PhysicalLocationVersionOne)node));

            case SarifNodeKindVersionOne.RegionVersionOne:
                return(VisitRegionVersionOne((RegionVersionOne)node));

            case SarifNodeKindVersionOne.ReplacementVersionOne:
                return(VisitReplacementVersionOne((ReplacementVersionOne)node));

            case SarifNodeKindVersionOne.ResultVersionOne:
                return(VisitResultVersionOne((ResultVersionOne)node));

            case SarifNodeKindVersionOne.RuleVersionOne:
                return(VisitRuleVersionOne((RuleVersionOne)node));

            case SarifNodeKindVersionOne.RunVersionOne:
                return(VisitRunVersionOne((RunVersionOne)node));

            case SarifNodeKindVersionOne.SarifLogVersionOne:
                return(VisitSarifLogVersionOne((SarifLogVersionOne)node));

            case SarifNodeKindVersionOne.StackFrameVersionOne:
                return(VisitStackFrameVersionOne((StackFrameVersionOne)node));

            case SarifNodeKindVersionOne.StackVersionOne:
                return(VisitStackVersionOne((StackVersionOne)node));

            case SarifNodeKindVersionOne.ToolVersionOne:
                return(VisitToolVersionOne((ToolVersionOne)node));

            default:
                return(node);
            }
        }
 /// <summary>
 /// Starts a rewriting visit of a node in the Sarif object model.
 /// </summary>
 /// <param name="node">
 /// The node to rewrite.
 /// </param>
 /// <returns>
 /// A rewritten instance of the node.
 /// </returns>
 public virtual object Visit(ISarifNodeVersionOne node)
 {
     return(this.VisitActual(node));
 }