### Question:
ImmutableFeatures implements Features { @Override public Features removeProperties(final String featureId) { final Feature feature = getFeatureOrNull(featureId); if (null != feature) { return setFeature(feature.removeProperties()); } return this; } private  ImmutableFeatures(final Map<String, Feature> features); static ImmutableFeatures empty(); static ImmutableFeatures of(final Iterable<Feature> features); static ImmutableFeatures of(final Feature feature, final Feature... additionalFeatures); @Override Optional<Feature> getFeature(final String featureId); @Override Features setFeature(final Feature feature); @Override Features removeFeature(final String featureId); @Override Features setDefinition(final String featureId, final FeatureDefinition definition); @Override Features removeDefinition(final String featureId); @Override Features setProperties(final String featureId, final FeatureProperties properties); @Override Features removeProperties(final String featureId); @Override Features setProperty(final String featureId, final JsonPointer propertyPath, final JsonValue propertyValue); @Override Features removeProperty(final String featureId, final JsonPointer propertyPath); @Override int getSize(); @Override boolean isEmpty(); @Override Stream<Feature> stream(); @Override Iterator<Feature> iterator(); @Override JsonObject toJson(final JsonSchemaVersion schemaVersion, final Predicate<JsonField> thePredicate); @Override boolean equals(final Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test(expected = NullPointerException.class) public void tryToRemovePropertiesForNullFeatureId() { underTest.removeProperties(null); }
@Test public void removePropertiesFromNonExistingFeatureReturnsSameFeaturesObject() { final Features unchangedFeatures = underTest.removeProperties("bumlux"); assertThat(unchangedFeatures).isSameAs(underTest); }