internal void ResolveTypes(WsdlParser parser)
 {
     string ns = null;
     string assemName = null;
     if (this.IsArray())
     {
         this.ResolveArray();
     }
     else
     {
         if (this.IsSUDSType && (this._sudsType == System.Runtime.Remoting.MetadataServices.SUDSType.None))
         {
             if (this._parser._bWrappedProxy)
             {
                 this._sudsType = System.Runtime.Remoting.MetadataServices.SUDSType.ClientProxy;
             }
             else
             {
                 this._sudsType = System.Runtime.Remoting.MetadataServices.SUDSType.MarshalByRef;
             }
         }
         if (this._baseTypeName != null)
         {
             if ((parser.IsURTExportedType(this._baseTypeXmlNS, out ns, out assemName) == UrtType.UrtSystem) || ns.StartsWith("System", StringComparison.Ordinal))
             {
                 this._baseType = new WsdlParser.SystemType(this._baseTypeName, this._baseTypeXmlNS, ns, assemName);
             }
             else
             {
                 WsdlParser.URTNamespace namespace2 = parser.LookupNamespace(this._baseTypeXmlNS);
                 if (namespace2 == null)
                 {
                     throw new SUDSParserException(string.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_CantResolveSchemaNS"), new object[] { this._baseTypeXmlNS, this._baseTypeName }));
                 }
                 this._baseType = namespace2.LookupComplexType(this._baseTypeName);
                 if (this._baseType == null)
                 {
                     this._baseType = new WsdlParser.SystemType(this._baseTypeName, this._baseTypeXmlNS, ns, assemName);
                 }
             }
         }
         if (this.IsSUDSType)
         {
             if (this._parser._bWrappedProxy)
             {
                 if ((this._baseTypeName == null) || (this._baseType is WsdlParser.SystemType))
                 {
                     this._baseTypeName = "RemotingClientProxy";
                     this._baseTypeXmlNS = SoapServices.CodeXmlNamespaceForClrTypeNamespace("System.Runtime.Remoting", "System.Runtime.Remoting");
                     ns = "System.Runtime.Remoting.Services";
                     assemName = "System.Runtime.Remoting";
                     this._baseType = new WsdlParser.SystemType(this._baseTypeName, this._baseTypeXmlNS, ns, assemName);
                 }
             }
             else if (this._baseTypeName == null)
             {
                 this._baseTypeName = "MarshalByRefObject";
                 this._baseTypeXmlNS = SoapServices.CodeXmlNamespaceForClrTypeNamespace("System", null);
                 ns = "System";
                 assemName = null;
                 this._baseType = new WsdlParser.SystemType(this._baseTypeName, this._baseTypeXmlNS, ns, assemName);
             }
         }
         else if (this._baseType == null)
         {
             this._baseType = new WsdlParser.SystemType("Object", SoapServices.CodeXmlNamespaceForClrTypeNamespace("System", null), "System", null);
         }
         for (int i = 0; i < this._implIFaceNames.Count; i += 2)
         {
             string str5;
             string str6;
             WsdlParser.BaseInterface interface2;
             string name = (string) this._implIFaceNames[i];
             string str4 = (string) this._implIFaceNames[i + 1];
             if (parser.IsURTExportedType(str4, out str5, out str6) == UrtType.UrtSystem)
             {
                 interface2 = new WsdlParser.SystemInterface(name, str4, str5, parser, str6);
             }
             else
             {
                 WsdlParser.URTNamespace namespace3 = parser.LookupNamespace(str4);
                 if (namespace3 == null)
                 {
                     throw new SUDSParserException(string.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_CantResolveSchemaNS"), new object[] { str4, name }));
                 }
                 interface2 = namespace3.LookupInterface(name);
                 if (interface2 == null)
                 {
                     throw new SUDSParserException(string.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_CantResolveTypeInNS"), new object[] { name, str4 }));
                 }
             }
             this._implIFaces.Add(interface2);
         }
         for (int j = 0; j < this._methods.Count; j++)
         {
             ((WsdlParser.URTMethod) this._methods[j]).ResolveTypes(parser);
         }
     }
 }
 internal URTSimpleType(string name, string urlNS, string ns, string encodedNS, bool bAnonymous, WsdlParser parser) : base(name, urlNS, ns, encodedNS)
 {
     this._baseTypeName = null;
     this._baseTypeXmlNS = null;
     this._baseType = null;
     this._fieldString = null;
     this._facets = new ArrayList();
     this._bEnum = false;
     this._bAnonymous = bAnonymous;
     this._encoding = null;
     this._parser = parser;
 }
 internal URTComplexType(string name, string urlNS, string ns, string encodedNS, SchemaBlockType blockDefault, bool bSUDSType, bool bAnonymous, WsdlParser parser, WsdlParser.URTNamespace xns) : base(name, urlNS, ns, encodedNS)
 {
     this._bprint = true;
     this._baseTypeName = null;
     this._baseTypeXmlNS = null;
     this._baseType = null;
     this._connectURLs = null;
     this._bStruct = !bSUDSType;
     this._blockType = blockDefault;
     this._bSUDSType = bSUDSType;
     this._bAnonymous = bAnonymous;
     this._fieldString = null;
     this._fields = new ArrayList();
     this._methods = new ArrayList();
     this._implIFaces = new ArrayList();
     this._implIFaceNames = new ArrayList();
     this._sudsType = System.Runtime.Remoting.MetadataServices.SUDSType.None;
     this._parser = parser;
     int index = name.IndexOf('+');
     if (index > 0)
     {
         string typeName = parser.Atomize(name.Substring(0, index));
         if (xns.LookupComplexType(typeName) == null)
         {
             WsdlParser.URTComplexType type = new WsdlParser.URTComplexType(typeName, urlNS, ns, encodedNS, blockDefault, bSUDSType, bAnonymous, parser, xns);
             xns.AddComplexType(type);
         }
     }
     if ((xns.UrtType == UrtType.Interop) && (name.LastIndexOf('.') > -1))
     {
         this._wireType = name;
         base.Name = name.Replace(".", "_");
         base.SearchName = name;
     }
 }