class ImmutableThingFromScratchBuilder implements ThingBuilder, ThingBuilder.FromScratch {

    @Override
    public FromScratch setFeatures(final Iterable<Feature> features) {
        checkNotNull(features, "Features to be set");

        if (features instanceof Features) {
            final Features featuresToSet = (Features) features;
            if (featuresToSet.isNull()) {
                return setNullFeatures();
            }
        }

        invokeOnFeaturesBuilder(fb -> fb.removeAll().setAll(features));
        return this;
    }

    private  ImmutableThingFromScratchBuilder();

}