private synchronized Schema getRealInstance(URI targetNamespace2, InputStream is1, Level level) throws SAXException { URI targetNamespace = targetNamespace2; if ((targetNamespace == null) || (schemas.get(targetNamespace) == null)) { XSISAXHandler contentHandler = parseSchema(is1, level); if ((targetNamespace == null) || "".equals(targetNamespace)) { targetNamespace = contentHandler.getSchema().getTargetNamespace(); } Schema schema = contentHandler.getSchema(); if (schemas.get(targetNamespace) != null) { schema = merge(schema, (Schema) schemas.get(targetNamespace)); } schemas.put(targetNamespace, schema); } else { Schema sh = (Schema) schemas.get(targetNamespace); XSISAXHandler contentHandler = parseSchema(is1, level); sh = merge(sh, contentHandler.getSchema()); schemas.put(targetNamespace, sh); // over-write } return (Schema) schemas.get(targetNamespace); }