private static Stream<Property> walk(
		final PathValue<?> root,
		final Dtor<? super PathValue<?>, ? extends Property> dtor
	) {
		final Dtor<? super PathValue<?>, Property> recursiveDtor =
			PreOrderIterator.dtor(
				dtor,
				property -> PathValue.of(property.path(), property.value()),
				PathValue::value
			);

		return recursiveDtor.unapply(root);
	}
This method extracts the direct properties of the given {@code root}
object.

{@snippet class="PropertySnippets" region="list(Object)"}

The code snippet above will create the following output
<pre>{@code
SimpleProperty[path=forename, value=Jonathan, mutable=false, type=java.lang.String, enclosure=Author]
SimpleProperty[path=surname, value=Franzen, mutable=false, type=java.lang.String, enclosure=Author]
SimpleProperty[path=birthDate, value=1959-08-17, mutable=false, type=java.time.LocalDate, enclosure=Author]
ListProperty[path=books, value=[], mutable=false, type=java.util.List, enclosure=Author]
}</pre>

@param root the root object from which the properties are extracted
@return all direct properties of the given {@code root} object
jenetics.incubator/src/main/java/io/jenetics/incubator/beans/property/Properties.java