code: public static Optional<Metadata> tryFind(Set<Metadata> metas, final Property property,
        final Optional<String> value)
    {
      Preconditions.checkNotNull(metas);
      Preconditions.checkNotNull(property);
      Preconditions.checkNotNull(value);
      return Iterables.tryFind(metas, new Predicate<Metadata>()
      {
  
        @Override
        public boolean apply(Metadata meta)
        {
          return property.equals(meta.getProperty())
              && (!value.isPresent() || value.get().equals(meta.getValue()));
        }
      });
    }
docs: Search all the given expressions and return the first one that matches the
  given property and value (if present).
  <p>
  If <code>value</code> is {@link Optional#absent()}
  </p>
  , only the property is used in the lookup.
  
  @param metas
  A set of metadata expressions to search
  @param property
  The property of the searched expression
  @param value
  The value of the searched expression, can be absent if the value
  is not relevant in the search
  @return an {@link Optional} containing an expression in the
  <code>metas</code> set matching the given property and value, or
  {@link Optional#absent()} if none is found.