@Override
    public boolean isOptional() {
        return optional != null && optional;
    }
<p>
    SchemaBuilder provides a fluent API for constructing {@link Schema} objects. It allows you to set each of the
    properties for the schema and each call returns the SchemaBuilder so the calls can be chained. When nested types
    are required, use one of the predefined schemas from {@link Schema} or use a second SchemaBuilder inline.
</p>
<p>
    Here is an example of building a struct schema:
    <pre>
    Schema dateSchema = SchemaBuilder.struct()
        .name("com.example.CalendarDate").version(2).doc("A calendar date including month, day, and year.")
        .field("month", Schema.STRING_SCHEMA)
        .field("day", Schema.INT8_SCHEMA)
        .field("year", Schema.INT16_SCHEMA)
        .build();
    </pre>
</p>
<p>
    Here is an example of using a second SchemaBuilder to construct complex, nested types:
    <pre>
    Schema userListSchema = SchemaBuilder.array(
        SchemaBuilder.struct().name("com.example.User").field("username", Schema.STRING_SCHEMA).field("id", Schema.INT64_SCHEMA).build()
    ).build();
    </pre>
</p>
connect/api/src/main/java/org/apache/kafka/connect/data/SchemaBuilder.java