/// <summary>Visit the visitor.</summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="visitor"></param>
 /// <returns></returns>
 public override T Visit <T>(ICompilerReferenceVisitor <T> visitor)
 {
     return(visitor.Visit(this.Assembly));
 }
 /// <summary>Visit the given visitor.</summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="visitor"></param>
 /// <returns></returns>
 public override T Visit <T>(ICompilerReferenceVisitor <T> visitor)
 {
     return(visitor.Visit(this.Stream));
 }
 /// <summary>execute the given visitor.</summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="visitor"></param>
 /// <returns></returns>
 public abstract T Visit <T>(ICompilerReferenceVisitor <T> visitor);