### Question:
BaseCloudEventBuilder implements CloudEventBuilder { @Override public SELF withoutExtension(@Nonnull String key) { this.extensions.remove(key); return self; } @SuppressWarnings("unchecked")  BaseCloudEventBuilder(); @SuppressWarnings("unchecked")  BaseCloudEventBuilder(CloudEvent event); SELF withData(byte[] data); SELF withData(String dataContentType, byte[] data); SELF withData(String dataContentType, URI dataSchema, byte[] data); SELF withExtension(@Nonnull String key, String value); SELF withExtension(@Nonnull String key, Number value); SELF withExtension(@Nonnull String key, Boolean value); @Override SELF withoutExtension(@Nonnull String key); @Override SELF withoutExtension(@Nonnull Extension extension); SELF withExtension(@Nonnull Extension extension); @Override CloudEvent end(byte[] value); @Override CloudEvent end();  }### Answer:
@Test public void copyAndRemoveExtension() { assertThat(Data.V1_WITH_JSON_DATA_WITH_EXT.getExtensionNames()) .contains("astring"); CloudEvent event = CloudEventBuilder.v1(Data.V1_WITH_JSON_DATA_WITH_EXT) .withoutExtension("astring") .build(); assertThat(event.getExtensionNames()) .doesNotContain("astring"); }