@Override
  protected void doAssertLuceneQuery(
      HasParentQueryBuilder queryBuilder, Query query, SearchContext searchContext)
      throws IOException {
    assertThat(query, instanceOf(HasChildQueryBuilder.LateParsingQuery.class));
    HasChildQueryBuilder.LateParsingQuery lpq = (HasChildQueryBuilder.LateParsingQuery) query;
    assertEquals(queryBuilder.score() ? ScoreMode.Max : ScoreMode.None, lpq.getScoreMode());

    if (queryBuilder.innerHit() != null) {
      // have to rewrite again because the provided queryBuilder hasn't been rewritten (directly
      // returned from
      // doCreateTestQueryBuilder)
      queryBuilder =
          (HasParentQueryBuilder) queryBuilder.rewrite(searchContext.getQueryShardContext());

      assertNotNull(searchContext);
      Map<String, InnerHitBuilder> innerHitBuilders = new HashMap<>();
      InnerHitBuilder.extractInnerHits(queryBuilder, innerHitBuilders);
      for (InnerHitBuilder builder : innerHitBuilders.values()) {
        builder.build(searchContext, searchContext.innerHits());
      }
      assertNotNull(searchContext.innerHits());
      assertEquals(1, searchContext.innerHits().getInnerHits().size());
      assertTrue(
          searchContext.innerHits().getInnerHits().containsKey(queryBuilder.innerHit().getName()));
      InnerHitsContext.BaseInnerHits innerHits =
          searchContext.innerHits().getInnerHits().get(queryBuilder.innerHit().getName());
      assertEquals(innerHits.size(), queryBuilder.innerHit().getSize());
      assertEquals(innerHits.sort().sort.getSort().length, 1);
      assertEquals(innerHits.sort().sort.getSort()[0].getField(), STRING_FIELD_NAME_2);
    }
  }
  @Override
  protected void doAssertLuceneQuery(
      NestedQueryBuilder queryBuilder, Query query, SearchContext searchContext)
      throws IOException {
    QueryBuilder innerQueryBuilder = queryBuilder.query();
    assertThat(query, instanceOf(ToParentBlockJoinQuery.class));
    ToParentBlockJoinQuery parentBlockJoinQuery = (ToParentBlockJoinQuery) query;
    // TODO how to assert this?
    if (queryBuilder.innerHit() != null) {
      // have to rewrite again because the provided queryBuilder hasn't been rewritten (directly
      // returned from
      // doCreateTestQueryBuilder)
      queryBuilder =
          (NestedQueryBuilder) queryBuilder.rewrite(searchContext.getQueryShardContext());

      assertNotNull(searchContext);
      Map<String, InnerHitBuilder> innerHitBuilders = new HashMap<>();
      InnerHitBuilder.extractInnerHits(queryBuilder, innerHitBuilders);
      for (InnerHitBuilder builder : innerHitBuilders.values()) {
        builder.build(searchContext, searchContext.innerHits());
      }
      assertNotNull(searchContext.innerHits());
      assertEquals(1, searchContext.innerHits().getInnerHits().size());
      assertTrue(
          searchContext.innerHits().getInnerHits().containsKey(queryBuilder.innerHit().getName()));
      InnerHitsContext.BaseInnerHits innerHits =
          searchContext.innerHits().getInnerHits().get(queryBuilder.innerHit().getName());
      assertEquals(innerHits.size(), queryBuilder.innerHit().getSize());
      assertEquals(innerHits.sort().sort.getSort().length, 1);
      assertEquals(innerHits.sort().sort.getSort()[0].getField(), INT_FIELD_NAME);
    }
  }