Provides facilities for determining whether two bean graphs are equal.

The {@link com.guidewire.pl.system.beanmatcher.BeanMatcher} interface defines the abstract {@link com.guidewire.pl.system.beanmatcher.BeanMatcher#areBeansEqual areBeansEqual} method for comparing two bean graphs.

Generally, the operation of "matching" any given property of one bean with the same property of another bean involves simply comparing the values of the properties on the two beans. However, other "matching" semantics may be required. For this reason, this package defines a {@link com.guidewire.pl.system.beanmatcher.MatchHandler} interface. Different instances of this interface are used during the matching process to compare different properties. The particular {@link com.guidewire.pl.system.beanmatcher.PropertyMatchHandlerMap} instance passed to the top-level areBeansEqual call controls which {@link com.guidewire.pl.system.beanmatcher.MatchHandler} is used for each kind of property.

Therefore, when comparing two object graphs, the client's main responsibility is to define the {@link com.guidewire.pl.system.beanmatcher.PropertyMatchHandlerMap} to use, as well as any custom {@link com.guidewire.pl.system.beanmatcher.MatchHandler} implementations that may be required for their particular needs. This package defines a default {@link com.guidewire.pl.system.beanmatcher.PropertyMatchHandlerMapImpl} implementation and a variety of generic {@link com.guidewire.pl.system.beanmatcher.MatchHandler} implementations that may be useful as a starting point. Note that this collection of classes provides the same functionality as {@link com.guidewire.pl.system.bundle.BundleUtil#areBeanGraphsEqual}, but provides finer-grained control over how objects are compared. @see com.guidewire.pl.system.beanmatcher.BeanMatcher @see com.guidewire.pl.system.beanmatcher.MatchHandler @see com.guidewire.pl.system.beanmatcher.PropertyMatchHandlerMap @author Paul D'Albora