### Question:
DelegatingProperties extends Properties { public Set<String> stringPropertyNames() { return environmentProperties.get().stringPropertyNames(); } DelegatingProperties(Properties baseline); @Override synchronized Object get(Object key); @Override Enumeration<?> propertyNames(); @Override synchronized Object put(Object key, Object value); @Override synchronized Object setProperty(String key, String value); @Override String getProperty(String key, String defaultValue); @Override synchronized boolean contains(Object value); @Override synchronized boolean containsKey(Object key); @Override boolean containsValue(Object value); @Override Collection<Object> values(); @Override synchronized Enumeration<Object> keys(); @Override Set<Object> keySet(); @Override void store(OutputStream out, String comments); @Override void store(Writer writer, String comments); @Override void storeToXML(OutputStream os, String comment); @Override void storeToXML(OutputStream os, String comment, String encoding); void storeToXML(OutputStream os, String comment, Charset charset); void load(Reader reader); int size(); boolean isEmpty(); Enumeration<Object> elements(); void load(InputStream inStream); Object remove(Object key); void putAll(Map<? extends Object, ? extends Object> t); void clear(); Object clone(); String toString(); Set<java.util.Map.Entry<Object, Object>> entrySet(); @SuppressWarnings("deprecation") void save(OutputStream out, String comments); boolean equals(Object o); int hashCode(); Object getOrDefault(Object key, Object defaultValue); void forEach(BiConsumer<? super Object, ? super Object> action); void replaceAll(BiFunction<? super Object, ? super Object, ? extends Object> function); Object putIfAbsent(Object key, Object value); boolean remove(Object key, Object value); boolean replace(Object key, Object oldValue, Object newValue); void loadFromXML(InputStream in); Object replace(Object key, Object value); Object computeIfAbsent(Object key, Function<? super Object, ? extends Object> mappingFunction); Object computeIfPresent(Object key,
			BiFunction<? super Object, ? super Object, ? extends Object> remappingFunction); Object compute(Object key, BiFunction<? super Object, ? super Object, ? extends Object> remappingFunction); Object merge(Object key, Object value,
			BiFunction<? super Object, ? super Object, ? extends Object> remappingFunction); String getProperty(String key); Set<String> stringPropertyNames(); void list(PrintStream out); void list(PrintWriter out);  }### Answer:
@Test void stringPropertyNamesIncludesScopedValues() throws Exception { DelegatingProperties properties = propertiesWithRegularAndScopedKey("key", "newKey"); assertThat(properties.stringPropertyNames()).containsExactlyInAnyOrder("key", "newKey"); }