private XmlSchema GetChameleonSchema(string targetNamespace, XmlSchema schema)
 {
     ChameleonKey key = new ChameleonKey(targetNamespace, schema);
     XmlSchema schema2 = (XmlSchema) this.chameleonSchemas[key];
     if (schema2 == null)
     {
         schema2 = schema.DeepClone();
         schema2.IsChameleon = true;
         schema2.TargetNamespace = targetNamespace;
         this.chameleonSchemas.Add(key, schema2);
         schema2.SourceUri = schema.SourceUri;
         schema.IsProcessing = false;
     }
     return schema2;
 }
 private XmlSchema GetChameleonSchema(string targetNamespace, XmlSchema schema) {
     ChameleonKey cKey = new ChameleonKey(targetNamespace, schema);
     XmlSchema chameleonSchema = (XmlSchema)chameleonSchemas[cKey]; //Need not clone if a schema for that namespace already exists
     if (chameleonSchema == null) {
         chameleonSchema = schema.DeepClone(); //It is ok that we dont lock the clone since no one else has access to it yet
         chameleonSchema.IsChameleon = true;
         chameleonSchema.TargetNamespace = targetNamespace;
         chameleonSchemas.Add(cKey, chameleonSchema);
         chameleonSchema.SourceUri = schema.SourceUri;
         //Handle the original schema that was added to lockList before cloning occurred
         schema.IsProcessing = false; //Since we cloned it for the chameleon
     }
     return chameleonSchema;
 }