A facet is a remote interface obtained from a facet provider. Facets obtained from the same provider are intended to be alternative interfaces to the same underlying state. There is no constraint that a facet provider always return the same facet object.