A facet provider allows access to alternative interfaces for a given implementation object. A facet provider may also enumerate the supported facet types (see Figure ).