Code review comment: This is not a change request but more of a suggestion:  ```java         StatefulSet statefulSet = list.getItems().stream()                 .filter(i -> Strings.isNotNullOrEmpty(i.getKind()) && i.getKind().equalsIgnoreCase(STATEFULSET))                 .filter(i -> i.getMetadata().getName().equals(name))                 .map(metadata -> {                     list.removeFromItems(metadata);                     return new StatefulSetBuilder((StatefulSet) metadata);                 }).findAny()                 .orElseGet(() -> new StatefulSetBuilder()                         .withNewMetadata()                         .withName(name)                         .endMetadata())                .accept(StatefulSetSpecBuilder.class, spec -> {                         if (spec.getReplicas() != null) {                             spec.withReplicas(1);                         }                         if (Strings.isNullOrEmpty(spec.getServiceName())) {                             spec.withServiceName(name);                         }                         if (spec.getSelector().getMatchLabels() == null) {                             spec.editSelector().withMatchLabels(new HashMap<>()).endSelector();                         }                         // - termination grace period seconds                         if (spec.getTemplate().getSpec().getTerminationGracePeriodSeconds() == null) {                             spec.editTemplate().editSpec().withTerminationGracePeriodSeconds(10L).endSpec().endTemplate();                         }                         //containers                         if (!containsContainerWithName(spec)) {                            spec.editTemplate()                                   .editSpec()                                   .addNewContainer()                                   .withName(name)                                   .endContainer()                                   .endSpec().endTemplate();                             }                           }).build();  ```  This mostly avoid referring to internal / nested builder types and gives a more fluent feel.

Code before review:
public void visit(KubernetesListFluent<?> list) {
StatefulSetBuilder builder = list.getItems().stream()
.filter(i -> Strings.isNotNullOrEmpty(i.getKind()) && i.getKind().equalsIgnoreCase(STATEFULSET))
.filter(i -> i.getMetadata().getName().equals(name))
.map(metadata -> {
list.removeFromItems(metadata);
return new StatefulSetBuilder((StatefulSet) metadata);
}).findAny()
.orElseGet(() -> new StatefulSetBuilder()
.withNewMetadata()
.withName(name)
.endMetadata());
StatefulSetFluent.SpecNested<StatefulSetBuilder> specBuilder = builder.editOrNewSpec()
.editOrNewSelector()
.endSelector()
.editOrNewTemplate()
.editOrNewSpec()
.endSpec()
.endTemplate();
if (specBuilder.getReplicas() != null) {
specBuilder.withReplicas(1);
}
if (Strings.isNullOrEmpty(specBuilder.getServiceName())) {
specBuilder.withServiceName(name);
}
if (specBuilder.getSelector().getMatchLabels() == null) {
specBuilder.editSelector().withMatchLabels(new HashMap<>()).endSelector();
}
if (specBuilder.getTemplate().getSpec().getTerminationGracePeriodSeconds() == null) {
specBuilder.editTemplate().editSpec().withTerminationGracePeriodSeconds(10L).endSpec().endTemplate();
}
if (!containsContainerWithName(specBuilder)) {
specBuilder.editTemplate().editSpec().addNewContainer().withName(name).endContainer().endSpec().endTemplate();
}
list.addToItems(specBuilder.endSpec().build());
}

Line under review: StatefulSetFluent.SpecNested<StatefulSetBuilder> specBuilder = builder.editOrNewSpec()

Code after addressing the review:
public void visit(KubernetesListFluent<?> list) {
StatefulSetBuilder builder = list.getItems().stream()
.filter(this::containsStatefulSetResource)
.map(replaceExistingStatefulSetResource(list))
.findAny()
.orElseGet(this::createStatefulSetResource)
.accept(StatefulSetBuilder.class, this::initStatefulSetResourceWithDefaults);
list.addToItems(builder.build());
}