title: geotools wfs-ng thread safety and strange behaviour problem
body: <p>I'm having a big trouble using geotools wfs-ng datastore plugin together with geoserver instance (geoserver is not a problem here, it's just a wfs implementation and provider of the data).
  Use case seems plain:</p>
  <ul>
  <li>custom web service that is sort of proxy to underlying wfs</li>
  <li>create wfs data store while my web service application starts:</li>
  </ul>
  <pre><code>final URL wfsUrl = new URL(url);
  final WFSConfig wfsConfig = WFSConfig.fromParams(Map.of(
      WFSDataAccessFactory.AXIS_ORDER.key, WFSDataAccessFactory.AXIS_ORDER_EAST_NORTH));
  final SimpleHttpClient httpClient = new SimpleHttpClient();
  return new WFSDataStore(new WFSClient(wfsUrl, httpClient, wfsConfig));
  </code></pre>
  <ul>
  <li>reuse it on consecutive custom api calls to proxy underlying wfs, many of below calls are being done in multiple threads</li>
  </ul>
  <pre><code>final SimpleFeatureSource eventsSource = dataStore.getFeatureSource(typeName);
  final String geometryColumn = dataStore.getSchema(typeName).getGeometryDescriptor().getLocalName();
  final Filter filter = filterOf(parameters, geometryColumn);
  final SimpleFeatureCollection eventsFeatures = eventsSource.getFeatures(new Query(typeName, filter));
  final SimpleFeatureIterator features = eventsFeatures.features();
  try {
      while (features.hasNext()) {
          final SimpleFeature next = features.next();
          //do something
      }
  } finally {
      features.close();
  }
  </code></pre>
  <p>tried version of geotools wfs-ng datastore plugin: 22.3, 23.5</p>
  <p>symptoms:</p>
  <ul>
  <li>strange in behaviour of the wfs-ng plugin is that every wfs GetFeature call releases DescribeFeatureType call (for the schema which seems failing, from org.geotools.xsd.impl PullParser probably), why isn't one sufficient?</li>
  <li>after number of multithreaded wfs calls (sometimes less, somethimes more)</li>
  </ul>
  <pre><code>Caused by: java.lang.ArrayIndexOutOfBoundsException: arraycopy: last source index 94 out of bounds for object array[93]
      at java.base/java.lang.System.arraycopy(Native Method) ~[na:na]
      at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.ensureSafety(BasicNotifierImpl.java:214) ~[org.eclipse.emf.common-2.15.0.jar!/:na]
      at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.remove(BasicNotifierImpl.java:244) ~[org.eclipse.emf.common-2.15.0.jar!/:na]
      at org.geotools.xsd.impl.SchemaIndexImpl.destroy(SchemaIndexImpl.java:93) ~[gt-xsd-core-22.3.jar!/:na]
      at org.geotools.xsd.Encoder.encode(Encoder.java:1119) ~[gt-xsd-core-22.3.jar!/:na]
      at org.geotools.filter.v2_0.bindings.BinarySpatialOpTypeBinding$1.encode(BinarySpatialOpTypeBinding.java:70) ~[gt-xsd-fes-22.3.jar!/:na]
      at org.geotools.xsd.Encoder.encode(Encoder.java:727) ~[gt-xsd-core-22.3.jar!/:na]
      ... 103 common frames omitted
  
  </code></pre>