public @NotNull Self withLanguage(final @NotNull Language language) {
    return with(new PatternCondition<T>("withLanguage") {
      @Override
      public boolean accepts(final @NotNull T t, final ProcessingContext context) {
        return t.getLanguage().equals(language);
      }
    });
  }
public @NotNull Self withLanguage(final @NotNull Language language)