+ | call_conv type type_spec DOUBLE_COLON method_name\r
+ typars_clause OPEN_PARENS type_list CLOSE_PARENS \r
+ {\r
+ ITypeRef owner = (ITypeRef) $3;\r
+ ArrayList arg_list = (ArrayList) $8;\r
+ ITypeRef[] param_list;\r
+ IMethodRef methref;\r
+\r
+ if (arg_list != null)\r
+ param_list = (ITypeRef[]) arg_list.ToArray (typeof (ITypeRef));\r
+ else\r
+ param_list = new ITypeRef[0];\r
+\r
+ if (owner.UseTypeSpec) {\r
+ methref = new TypeSpecMethodRef (owner, (ITypeRef) $2,\r
+ (CallConv) $1, (string) $5, param_list);\r
+ } else {\r
+ methref = owner.GetMethodRef ((ITypeRef) $2,\r
+ (CallConv) $1, (string) $5, param_list);\r
+ }\r
+\r
+ if ($6 != null) {\r
+ ArrayList tp = (ArrayList) $6;\r
+ ITypeRef[] ta = (ITypeRef[]) tp.ToArray (typeof (ITypeRef));\r
+ \r
+ methref = new GenericMethodRef (methref, new GenericMethodSig (ta));\r
+ }\r
+ Console.WriteLine ("methodref: {0}", methref);\r
+ $$ = methref;\r
+ }\r