// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace Microsoft.AspNetCore.Razor.Language.Intermediate
{
	public abstract class IntermediateNodeVisitor
	{
		public virtual void Visit( IntermediateNode node )
		{
			node.Accept( this );
		}

		public virtual void VisitDefault( IntermediateNode node )
		{
		}

		public virtual void VisitToken( IntermediateToken node )
		{
			VisitDefault( node );
		}

		public virtual void VisitDirectiveToken( DirectiveTokenIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitDirective( DirectiveIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitMalformedDirective( MalformedDirectiveIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitExtension( ExtensionIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitCSharpCode( CSharpCodeIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitCSharpExpression( CSharpExpressionIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitHtmlAttributeValue( HtmlAttributeValueIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitCSharpExpressionAttributeValue( CSharpExpressionAttributeValueIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitCSharpCodeAttributeValue( CSharpCodeAttributeValueIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitHtmlAttribute( HtmlAttributeIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitClassDeclaration( ClassDeclarationIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitMethodDeclaration( MethodDeclarationIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitFieldDeclaration( FieldDeclarationIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitPropertyDeclaration( PropertyDeclarationIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitDocument( DocumentIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitHtml( HtmlContentIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitNamespaceDeclaration( NamespaceDeclarationIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitUsingDirective( UsingDirectiveIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitTagHelper( TagHelperIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitTagHelperBody( TagHelperBodyIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitTagHelperProperty( TagHelperPropertyIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitTagHelperDirectiveAttribute( TagHelperDirectiveAttributeIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitTagHelperHtmlAttribute( TagHelperHtmlAttributeIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitTagHelperDirectiveAttributeParameter( TagHelperDirectiveAttributeParameterIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitComponent( ComponentIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitComponentAttribute( ComponentAttributeIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitComponentChildContent( ComponentChildContentIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitComponentTypeArgument( ComponentTypeArgumentIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitComponentTypeInferenceMethod( ComponentTypeInferenceMethodIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitMarkupElement( MarkupElementIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitMarkupBlock( MarkupBlockIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitSetKey( SetKeyIntermediateNode node )
		{
			VisitDefault( node );
		}

		public virtual void VisitSplat( SplatIntermediateNode node )
		{
			VisitDefault( node );
		}
	}
}
