public AstNode rewrite(final AstNode node, final C context) {
    return rewriter.process(node, context);
  }
@Test
  public void shouldRewriteCreateStream() {
    // Given:
    final TableElement tableElement1 = givenTableElement("foo");
    final TableElement tableElement2 = givenTableElement("bar");
    final TableElement rewrittenTableElement1 = givenTableElement("baz");
    final TableElement rewrittenTableElement2 = givenTableElement("boz");
    final CreateStream cs = new CreateStream(
        location,
        sourceName,
        TableElements.of(tableElement1, tableElement2),
        false,
        false,
        sourceProperties,
        false
    );
    when(mockRewriter.apply(tableElement1, context)).thenReturn(rewrittenTableElement1);
    when(mockRewriter.apply(tableElement2, context)).thenReturn(rewrittenTableElement2);

    // When:
    final AstNode rewritten = rewriter.rewrite(cs, context);

    // Then:
    assertThat(
        rewritten,
        equalTo(
            new CreateStream(
                location,
                sourceName,
                TableElements.of(rewrittenTableElement1, rewrittenTableElement2),
                false,
                false,
                sourceProperties,
                false
            )
        )
    );
  }