ICloneableContextMenu Defines the contract for classes which must provide an API that supports ConfigurableContextMenu cloning
 IConfigurableContextMenu Defines the contract for classes which must provide an API which allows users to configure a custom ContextMenu
 IDynamicContextMenu Defines the contract for an IConfigurableContextMenu implementation which requires the flexability to dynamically control ContextMenuItems
 ConfigurableContextMenu Provides a default IConfigurableContextMenu implementation which allows clients to configure a custom ContextMenu dynamically at runtime as well as add additional items, remove items and enable disable ContextMenuItems

ConfigurableContextMenu provides a "has-a" relationship in that it wraps a ContextMenu object instance in order to provide an API for working on a ContextMenu at runtime

 ConfigurableContextMenuBuilder Constructs a new instance of ConfigurableContextMenu from a collection of ContextMenuItemClient instances

The ConfigurableContextMenuBuilder accepts a ListCollectionView from which a new ConfigurableContextMenu object is created.

 ContextMenuItemCaptionValidator Provides an all static API which determines if a specific ContextMenuItem caption is valid
 ContextMenuItemClient Convenience class which is used to provide a type safe object which ConfigurableContextMenuBuilder utilizes to create an instance of ConfigurableContectMenu

ContextMenuItemClient is a simple object which is intened to wrap a ContextMenuItem with its associated listener Function