### Question:
AggregateNode extends PlanNode { @Override public Schema getSchema() { return this.schema; } @JsonCreator  AggregateNode(
      @JsonProperty("id") final PlanNodeId id,
      @JsonProperty("source") final PlanNode source,
      @JsonProperty("schema") final Schema schema,
      @JsonProperty("groupby") final List<Expression> groupByExpressions,
      @JsonProperty("window") final WindowExpression windowExpression,
      @JsonProperty("aggregateFunctionArguments") final List<Expression> aggregateFunctionArguments,
      @JsonProperty("functionList") final List<FunctionCall> functionList,
      @JsonProperty("requiredColumnList") final List<Expression> requiredColumnList,
      @JsonProperty("finalSelectExpressions") final List<Expression> finalSelectExpressions,
      @JsonProperty("havingExpressions") final Expression havingExpressions
  ); @Override Schema getSchema(); @Override Field getKeyField(); @Override List<PlanNode> getSources(); PlanNode getSource(); List<Expression> getGroupByExpressions(); WindowExpression getWindowExpression(); List<Expression> getAggregateFunctionArguments(); List<FunctionCall> getFunctionList(); List<Expression> getRequiredColumnList(); Expression getHavingExpressions(); @Override R accept(PlanVisitor<C, R> visitor, C context); @Override SchemaKStream buildStream(
      final StreamsBuilder builder,
      final KsqlConfig ksqlConfig,
      final KafkaTopicClient kafkaTopicClient,
      final FunctionRegistry functionRegistry,
      final Map<String, Object> props,
      final SchemaRegistryClient schemaRegistryClient
  );  }### Answer:
@Test public void shouldBuildCorrectAggregateSchema() { SchemaKStream stream = build(); final List<Field> expected = Arrays.asList( new Field("COL0", 0, Schema.INT64_SCHEMA), new Field("KSQL_COL_1", 1, Schema.FLOAT64_SCHEMA), new Field("KSQL_COL_2", 2, Schema.INT64_SCHEMA)); assertThat(stream.getSchema().fields(), equalTo(expected)); }