public void testPrefetchToMany_WithQualfier() throws Exception {
    createTwoArtistsAndTwoPaintingsDataSet();

    Map<String, Object> params = new HashMap<String, Object>();
    params.put("name1", "artist2");
    params.put("name2", "artist3");
    Expression e = Expression.fromString("artistName = $name1 or artistName = $name2");
    SelectQuery q = new SelectQuery("Artist", e.expWithParameters(params));
    q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);

    final List<Artist> artists = context.performQuery(q);

    queryInterceptor.runWithQueriesBlocked(
        new UnitTestClosure() {

          public void execute() {

            assertEquals(2, artists.size());

            Artist a1 = artists.get(0);
            List<?> toMany = (List<?>) a1.readPropertyDirectly(Artist.PAINTING_ARRAY_PROPERTY);
            assertNotNull(toMany);
            assertFalse(((ValueHolder) toMany).isFault());
            assertEquals(1, toMany.size());

            Painting p1 = (Painting) toMany.get(0);
            assertEquals("p_" + a1.getArtistName(), p1.getPaintingTitle());

            Artist a2 = artists.get(1);
            List<?> toMany2 = (List<?>) a2.readPropertyDirectly(Artist.PAINTING_ARRAY_PROPERTY);
            assertNotNull(toMany2);
            assertFalse(((ValueHolder) toMany2).isFault());
            assertEquals(1, toMany2.size());

            Painting p2 = (Painting) toMany2.get(0);
            assertEquals("p_" + a2.getArtistName(), p2.getPaintingTitle());
          }
        });
  }