public InvokeStm(ASyncInvokeExp node)
        {
            Node = node;
            if (node.GetName() is AAmbiguousNameLvalue)
            {
                AAmbiguousNameLvalue ambigious = (AAmbiguousNameLvalue) node.GetName();
                AAName name = (AAName)ambigious.GetAmbiguous();
                /*List<List<Node>>[] targets;
                List<ANamespaceDecl> namespaces = new List<ANamespaceDecl>();
                /*bool b;
                TypeLinking.GetTargets(name, out targets, namespaces, data, null, out b);
                for (int i = 0; i < 3; i++)
                {

                }*/
                Name = (TIdentifier)name.GetIdentifier()[name.GetIdentifier().Count - 1];
                name.GetIdentifier().RemoveAt(name.GetIdentifier().Count - 1);
                if (name.GetIdentifier().Count == 0)
                    Base = null;
                else
                    Base = name;
            }
            else
            {
                AStructLvalue lvalue = (AStructLvalue) node.GetName();
                Name = lvalue.GetName();
                Base = lvalue.GetReceiver();
            }
        }
 public override void CaseASyncInvokeExp(ASyncInvokeExp node)
 {
     InASyncInvokeExp(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.GetToken() != null)
     {
         node.GetToken().Apply(this);
     }
     OutASyncInvokeExp(node);
 }