Program: 63597
Project: 63597
Buggy source:
/** 
 * Return a Schema for the given Source object. Since this method is called recursively, and the SchemaResolverWrapper is stateful, the resolver wrapper must be created outside of this method.
 * @param xsdSource
 * @param schemaResolverWrapper wraps the schema resolver to be used to resolve imports/includes
 * @return
 */
public Schema getSchema(Source xsdSource,SchemaResolverWrapper schemaResolverWrapper){
  xsdSource=schemaResolverWrapper.resolveSchema(xsdSource);
  XMLContext context=new XMLContext(getSchemaProject());
  XMLUnmarshaller unmarshaller=context.createUnmarshaller();
  unmarshaller.setEntityResolver(schemaResolverWrapper.getSchemaResolver());
  Schema schema=(Schema)unmarshaller.unmarshal(xsdSource);
  java.util.List imports=schema.getImports();
  Iterator iter=imports.iterator();
  while (iter.hasNext()) {
    Import nextImport=(Import)iter.next();
    Source referencedSchema=getReferencedSchema(xsdSource,nextImport.getNamespace(),nextImport.getSchemaLocation(),schemaResolverWrapper);
    if (referencedSchema != null) {
      Schema importedSchema=getSchema(referencedSchema,schemaResolverWrapper);
      nextImport.setSchema(importedSchema);
    }
  }
  java.util.List includes=schema.getIncludes();
  Iterator includesIter=includes.iterator();
  while (includesIter.hasNext()) {
    Include nextInclude=(Include)includesIter.next();
    Source referencedSchema=getReferencedSchema(xsdSource,schema.getTargetNamespace(),nextInclude.getSchemaLocation(),schemaResolverWrapper);
    if (referencedSchema != null) {
      Schema includedSchema=getSchema(referencedSchema,schemaResolverWrapper);
      nextInclude.setSchema(includedSchema);
    }
  }
  return schema;
}

Fixed version (ground truth):
/** 
 * Return a Schema for the given Source object. Since this method is called recursively, and the SchemaResolverWrapper is stateful, the resolver wrapper must be created outside of this method.
 * @param xsdSource
 * @param schemaResolverWrapper wraps the schema resolver to be used to resolve imports/includes
 * @return
 */
public Schema getSchema(Source xsdSource,SchemaResolverWrapper schemaResolverWrapper,boolean closeStream){
  xsdSource=schemaResolverWrapper.resolveSchema(xsdSource);
  XMLContext context=new XMLContext(getSchemaProject());
  XMLUnmarshaller unmarshaller=context.createUnmarshaller();
  unmarshaller.setEntityResolver(schemaResolverWrapper.getSchemaResolver());
  Schema schema=(Schema)unmarshaller.unmarshal(xsdSource);
  if (closeStream) {
    closeSource(xsdSource);
  }
  java.util.List imports=schema.getImports();
  Iterator iter=imports.iterator();
  while (iter.hasNext()) {
    Import nextImport=(Import)iter.next();
    Source referencedSchema=getReferencedSchema(xsdSource,nextImport.getNamespace(),nextImport.getSchemaLocation(),schemaResolverWrapper);
    if (referencedSchema != null) {
      Schema importedSchema=getSchema(referencedSchema,schemaResolverWrapper,true);
      nextImport.setSchema(importedSchema);
    }
  }
  java.util.List includes=schema.getIncludes();
  Iterator includesIter=includes.iterator();
  while (includesIter.hasNext()) {
    Include nextInclude=(Include)includesIter.next();
    Source referencedSchema=getReferencedSchema(xsdSource,schema.getTargetNamespace(),nextInclude.getSchemaLocation(),schemaResolverWrapper);
    if (referencedSchema != null) {
      Schema includedSchema=getSchema(referencedSchema,schemaResolverWrapper,true);
      nextInclude.setSchema(includedSchema);
    }
  }
  return schema;
}