private void FindMethodAttributes()
 {
     ArrayList inherit;
     Type baseType;
     BindingFlags flags;
     if (this._complexType != null)
     {
         inherit = this._complexType.Inherit;
         baseType = null;
         if (inherit != null)
         {
             goto Label_00A0;
         }
         inherit = new ArrayList();
         if (this._complexType.SUDSType == SUDSType.ClientProxy)
         {
             baseType = typeof(RemotingClientProxy);
         }
         else if (this._complexType.SudsUse == WsdlParser.SudsUse.MarshalByRef)
         {
             baseType = typeof(MarshalByRefObject);
         }
         else if (this._complexType.SudsUse == WsdlParser.SudsUse.ServicedComponent)
         {
             baseType = typeof(MarshalByRefObject);
         }
         if (baseType != null)
         {
             while (baseType != null)
             {
                 inherit.Add(baseType);
                 baseType = baseType.BaseType;
             }
             this._complexType.Inherit = inherit;
             goto Label_00A0;
         }
     }
     return;
 Label_00A0:
     flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly;
     bool flag = MethodFlagsTest(this._methodFlags, System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Virtual);
     bool flag2 = false;
     for (int i = 0; i < inherit.Count; i++)
     {
         baseType = (Type) inherit[i];
         MethodInfo[] methods = null;
         try
         {
             MethodInfo method = baseType.GetMethod(this.Name, flags);
             if (method != null)
             {
                 methods = new MethodInfo[] { method };
             }
         }
         catch
         {
             methods = baseType.GetMethods(flags);
         }
         if (methods != null)
         {
             MethodInfo[] infoArray2 = methods;
             for (int j = 0; j < infoArray2.Length; j++)
             {
                 MethodBase baseInfo = infoArray2[j];
                 if ((((baseInfo != null) && (baseInfo.Name == this.Name)) && ((baseInfo.IsFamily || baseInfo.IsPublic) || baseInfo.IsAssembly)) && this.IsSignature(baseInfo))
                 {
                     flag2 = true;
                     if (!baseInfo.IsPublic)
                     {
                         if (baseInfo.IsAssembly)
                         {
                             this._methodFlags &= ~System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Public;
                             this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Internal;
                         }
                         else if (baseInfo.IsFamily)
                         {
                             this._methodFlags &= ~System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Public;
                             this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Protected;
                         }
                     }
                     if (baseInfo.IsFinal)
                     {
                         this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.New;
                     }
                     else if (baseInfo.IsVirtual && flag)
                     {
                         this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Override;
                     }
                     else
                     {
                         this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.New;
                     }
                     break;
                 }
             }
         }
         if (flag2)
         {
             return;
         }
     }
 }
            internal URTMethod(string name, string soapAction, string methodAttributes, WsdlParser.URTComplexType complexType)
            {
                this._methodName = name;
                this._soapAction = soapAction;
                this._methodType = null;
                this._complexType = complexType;
                name.IndexOf('.');
                this._methodFlags = System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.None;
                if ((methodAttributes != null) && (methodAttributes.Length > 0))
                {
                    foreach (string str in methodAttributes.Split(new char[] { ' ' }))
                    {
                        switch (str)
                        {
                            case "virtual":
                                this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Virtual;
                                break;

                            case "new":
                                this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.New;
                                break;

                            case "override":
                                this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Override;
                                break;

                            case "public":
                                this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Public;
                                break;

                            case "protected":
                                this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Protected;
                                break;

                            case "internal":
                                this._methodFlags |= System.Runtime.Remoting.MetadataServices.WsdlParser.MethodFlags.Internal;
                                break;
                        }
                    }
                }
            }