code: public static <T> T assumeFacet(Class<T> facetType, Faceted subject)
      {
          if (subject != null)
          {
              T facet = subject.asFacet(facetType);
              if (facet != null) return facet;
          }
  
          throw new UnsupportedFacetException(facetType, subject);
      }
docs: Returns a facet of the given subject if supported, throwing an
  exception otherwise.
  <p>
  This does not attempt to cast the subject to the requested type, since
  the {@link Faceted} interface declares the intent to control the
  conversion.
  
  @return not null.
  
  @throws UnsupportedFacetException if {@code subject} is null or if the
  subject doesn't support the requested facet type.