public override bool Visit(
     UnifiedGenericType element, VisitorArgument arg)
 {
     element.Type.TryAccept(this, arg);
     element.Arguments.TryAccept(this, arg);
     return false;
 }
 public override bool Visit(
     UnifiedGenericType element, VisitorArgument arg)
 {
     element.Type.TryAccept(this, arg);
     element.Arguments.TryAccept(this, arg);
     return(false);
 }
 /// <summary>
 ///   ジェネリックタイプから,型引数([]の中身)をUnifiedTypeオブジェクトにして取得する (e.g. List[T] なる UnifiedGenericType オブジェクトから,T (UnifiedType オブジェクト) を生成して返却)
 /// </summary>
 /// <param name="genericType"> </param>
 /// <returns> </returns>
 public static UnifiedType GetTypeParameterAsType(
     UnifiedGenericType genericType)
 {
     return
             ((UnifiedBasicType)genericType.Arguments.First().Value).
                     DeepCopy();
 }