/// <summary>
 /// Visits the <paramref name="visitor"/> provided.
 /// </summary>
 /// <typeparam name="TResult">The type of value to return for the visitor.</typeparam>
 /// <typeparam name="TContext">The type of context passed to the visitor.</typeparam>
 /// <param name="visitor">The <see cref="IIntermediateTypeVisitor"/> to
 /// receive the <see cref="IntermediateEnumType"/> as a visitor.</param>
 /// <param name="context">The <typeparamref name="TContext"/> relative to the current
 /// implementation.</param>
 public override TResult Accept <TResult, TContext>(IIntermediateTypeVisitor <TResult, TContext> visitor, TContext context)
 {
     return(visitor.Visit(this, context));
 }
 /// <summary>
 /// Visits the <paramref name="visitor"/> provided.
 /// </summary>
 /// <typeparam name="TResult">The type of value to return for the visitor.</typeparam>
 /// <typeparam name="TContext">The type of context passed to the visitor.</typeparam>
 /// <param name="visitor">The <see cref="IIntermediateTypeVisitor"/> to
 /// receive the <see cref="IntermediateTypeBase{TTypeIdentifier, TType, TIntermediateType}"/> as a visitor.</param>
 /// <param name="context">The <typeparamref name="TContext"/> relative to the current
 /// implementation.</param>
 public abstract TResult Accept <TResult, TContext>(IIntermediateTypeVisitor <TResult, TContext> visitor, TContext context);
 public override void Accept(IIntermediateTypeVisitor visitor)
 {
     visitor.Visit(this);
 }
 public abstract void Accept(IIntermediateTypeVisitor visitor);