propogateComponents(redefiningSchema);
  protected void incorporate(XSDSchemaCompositor xsdSchemaCompositor)  {    xsdSchemaCompositor.setIncorporatedSchema(this);    XSDSchema redefiningSchema = xsdSchemaCompositor.getSchema();    getReferencingDirectives().add(xsdSchemaCompositor);    if (getTargetNamespace() == null && redefiningSchema.getTargetNamespace() != null)    {      setTargetNamespace(redefiningSchema.getTargetNamespace());    }    if (getPendingSchemaLocation() != null)    {      for (Iterator i = getContents().iterator(); i.hasNext(); )      {        Object component = i.next();        if (component instanceof XSDSchemaDirective)        {          ((XSDConcreteComponentImpl)component).patch();        }      }    }    if (xsdSchemaCompositor instanceof XSDRedefine)    {      XSDSwitch xsdSwitch =        new XSDSwitch()        {          public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition xsdAttributeGroupDefinition)          {            XSDAttributeGroupDefinition redefinedAttributeGroupDefinition =               resolveAttributeGroupDefinition(xsdAttributeGroupDefinition.getName());            for (Iterator i = getSchemasToRedefine().iterator(); i.hasNext(); )            {              XSDSchemaImpl schemaToRedefine = (XSDSchemaImpl)i.next();              int index = schemaToRedefine.getAttributeGroupDefinitions().indexOf(redefinedAttributeGroupDefinition);              if (index != -1)              {                schemaToRedefine.getAttributeGroupDefinitions().set(index, xsdAttributeGroupDefinition);                schemaToRedefine.redefinitionMap.put(xsdAttributeGroupDefinition, redefinedAttributeGroupDefinition);              }            }            return this;          }          public Object caseXSDSimpleTypeDefinition(XSDSimpleTypeDefinition xsdSimpleTypeDefinition)          {            XSDSimpleTypeDefinition redefinedSimpleTypeDefinition =               resolveSimpleTypeDefinition(xsdSimpleTypeDefinition.getName());            for (Iterator i = getSchemasToRedefine().iterator(); i.hasNext(); )            {              XSDSchemaImpl schemaToRedefine = (XSDSchemaImpl)i.next();              int index = schemaToRedefine.getTypeDefinitions().indexOf(redefinedSimpleTypeDefinition);              if (index != -1)              {                schemaToRedefine.getTypeDefinitions().set(index, xsdSimpleTypeDefinition);                schemaToRedefine.redefinitionMap.put(xsdSimpleTypeDefinition, redefinedSimpleTypeDefinition);              }            }            return this;          }          public Object caseXSDComplexTypeDefinition(XSDComplexTypeDefinition xsdComplexTypeDefinition)          {            XSDComplexTypeDefinition redefinedComplexTypeDefinition =               resolveComplexTypeDefinition(xsdComplexTypeDefinition.getName());            if (xsdComplexTypeDefinition != redefinedComplexTypeDefinition)            {              for (Iterator i = getSchemasToRedefine().iterator(); i.hasNext(); )              {                XSDSchemaImpl schemaToRedefine = (XSDSchemaImpl)i.next();                int index = schemaToRedefine.getTypeDefinitions().indexOf(redefinedComplexTypeDefinition);                if (index != -1)                {                  schemaToRedefine.getTypeDefinitions().set(index, xsdComplexTypeDefinition);                  schemaToRedefine.redefinitionMap.put(xsdComplexTypeDefinition, redefinedComplexTypeDefinition);                }              }            }            return this;          }          public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition xsdModelGroupDefinition)          {            XSDModelGroupDefinition redefinedModelGroupDefinition =               resolveModelGroupDefinition(xsdModelGroupDefinition.getName());            for (Iterator i = getSchemasToRedefine().iterator(); i.hasNext(); )            {              XSDSchemaImpl schemaToRedefine = (XSDSchemaImpl)i.next();              int index = schemaToRedefine.getModelGroupDefinitions().indexOf(redefinedModelGroupDefinition);              if (index != -1)              {                schemaToRedefine.getModelGroupDefinitions().set(index, xsdModelGroupDefinition);                schemaToRedefine.redefinitionMap.put(xsdModelGroupDefinition, redefinedModelGroupDefinition);              }            }            return this;          }        };      for (Iterator contents = ((XSDRedefine)xsdSchemaCompositor).getContents().iterator(); contents.hasNext(); )      {        xsdSwitch.doSwitch((XSDRedefineContent)contents.next());      }    }    if (((XSDSchemaImpl)redefiningSchema).getPendingSchemaLocation() != null)    {      ((XSDSchemaImpl)redefiningSchema).getSchemasToRedefine().addAll(getSchemasToRedefine());    }    if (getPendingSchemaLocation() == null)    {      patch();    }    propogateComponents(redefiningSchema);    ((XSDSchemaImpl)redefiningSchema).getRedefinitionMap().putAll(getRedefinitionMap());  }