/**
* <p>
* Provides functionality around nesting hierarchies - a term which is explained in all detail in the comment on
* {@link org.codefx.libfx.nesting.Nesting Nesting}.
* <h2>Nesting</h2> A {@code Nesting} encapsulates a hierarchy of nested {@code ObservableValues} and collapses them
* into a property which always contains the current innermost {@code Observable} in that hierarchy. A {@code Nesting}
* can be used as a basic building block for other nested functionality (see below).
* <p>
* See the comment on {@link org.codefx.libfx.nesting.Nesting Nesting} for details.
* <h2>Nested Property</h2> A {@code NestedProperty} uses a {@code Nesting} to bind its value to the inner
* {@code Property} in a nesting hierarchy, updating the binding as the inner observable changes its value or is
* replaced. It can thus be used to collapse a nesting hierarchy into a single property.
* <p>
* See the comment on {@link org.codefx.libfx.nesting.property.NestedProperty NestedProperty} for details.
* <h2>Nested Listeners</h2> A {@code Nesting} can also be used to add listeners to its inner observable. These
* listeners are moved from one observable to the next as they are replaced.
* <p>
* See the comments on {@link org.codefx.libfx.nesting.listener.NestedChangeListenerHandle NestedChangeListener} and
* {@link org.codefx.libfx.nesting.listener.NestedInvalidationListenerHandle NestedInvalidationListener} for details.
* <h2>Builders</h2> Instances of the classes described above can be build by starting with the methods in
* {@link org.codefx.libfx.nesting.Nestings Nestings}.
*
* @see org.codefx.libfx.nesting.Nesting Nesting
* @see org.codefx.libfx.nesting.property.NestedProperty NestedProperty
* @see org.codefx.libfx.nesting.listener.NestedChangeListenerHandle NestedChangeListener
* @see org.codefx.libfx.nesting.listener.NestedInvalidationListenerHandle NestedInvalidationListener
*/
package org.codefx.libfx.nesting;