code: public static <E extends Enum<E>> Set<E> filter(Set<Property> properties, final Class<E> clazz)
    {
      Preconditions.checkNotNull(clazz);
      if (properties == null) return ImmutableSet.of();
      return Sets.immutableEnumSet(Collections2.filter(
          Collections2.transform(properties, new Function<Property, E>()
          {
            @Override
            public E apply(Property input)
            {
              try
              {
                return clazz.cast(input.toEnum());
              } catch (Exception e)
              {
                return null;
              }
            }
          }), Predicates.notNull()));
    }
docs: Filters the given set of {@link Property} values and keeps the values
  backed by an {@link Enum} constant of the given type.
  
  @param properties
  the properties to filter
  @param clazz
  the class of a vocabulary-backing enum
  @return An immutable {@link EnumSet} representing the filtered properties