public static @NotNull <T> ElementPattern save(final Key<T> key) {
    return new ObjectPattern.Capture<>(new InitialPatternCondition(Object.class) {
      @Override
      public boolean accepts(final @Nullable Object o, final ProcessingContext context) {
        context.put(key, (T)o);
        return true;
      }

      @Override
      public void append(final @NotNull @NonNls StringBuilder builder, final String indent) {
        builder.append("save(").append(key).append(")");
      }
    });
  }
public static @NotNull <T> ElementPattern save(final Key<T> key)