public override object Visit(TypeReferenceExpression typeReferenceExpression, object data)
 {
     return null;
 }
 public virtual object Visit(TypeReferenceExpression typeReferenceExpression, object data)
 {
     // nothing to visit
     return data;
 }
 public object Visit(TypeReferenceExpression typeReferenceExpression, object data)
 {
     DebugOutput(typeReferenceExpression);
     return GetTypeString(typeReferenceExpression.TypeReference);
 }
 public override object Visit(TypeReferenceExpression typeReferenceExpression, object data)
 {
     return new ReturnType(typeReferenceExpression.TypeReference);
 }