public @NotNull Self and(final ElementPattern pattern) {
    return with(new PatternConditionPlus<T, T>("and", pattern) {
      @Override
      public boolean processValues(T t, ProcessingContext context, PairProcessor<? super T, ? super ProcessingContext> processor) {
        return processor.process(t, context);
      }
    });
  }
public @NotNull Self and(final ElementPattern pattern)