public @NotNull Self save(@NotNull Key<? super T> key) {
    return with(new PatternCondition<T>("save") {
      @Override
      public boolean accepts(final @NotNull T t, final ProcessingContext context) {
        context.put(key, t);
        return true;
      }
    });
  }
public @NotNull Self save(@NotNull Key<? super T> key)