public override void CaseANonstaticInvokeExp(ANonstaticInvokeExp node)
 {
     if (node.GetDotType() is AArrowDotType)
     {
         TArrow arrow = ((AArrowDotType)node.GetDotType()).GetToken();
         node.SetReceiver(new ALvalueExp(new APointerLvalue(new TStar("*", arrow.Line, arrow.Pos), node.GetReceiver())));
         node.SetDotType(new ADotDotType(new TDot(".", arrow.Line, arrow.Pos)));
     }
     base.CaseANonstaticInvokeExp(node);
 }
 public override void CaseANonstaticInvokeExp(ANonstaticInvokeExp node)
 {
     InANonstaticInvokeExp(node);
     {
         Object[] temp = new Object[node.GetArgs().Count];
         node.GetArgs().CopyTo(temp, 0);
         for (int i = temp.Length - 1; i >= 0; i--)
         {
             ((PExp)temp[i]).Apply(this);
         }
     }
     if (node.GetName() != null)
     {
         node.GetName().Apply(this);
     }
     if (node.GetDotType() != null)
     {
         node.GetDotType().Apply(this);
     }
     if (node.GetReceiver() != null)
     {
         node.GetReceiver().Apply(this);
     }
     OutANonstaticInvokeExp(node);
 }
 public override void CaseANonstaticInvokeExp(ANonstaticInvokeExp node)
 {
     node.GetReceiver().Apply(this);
     node.GetDotType().Apply(this);
     Value += node.GetName().Text + "(";
     bool first = true;
     foreach (PExp arg in node.GetArgs())
     {
         if (!first)
             Value += ", ";
         else
             first = false;
         arg.Apply(this);
     }
     Value += ")";
 }