@Override
  public @NotNull ValueKey.BeforeIf<T> thenGet(@NotNull Supplier<? extends T1> fn) {
    switch (myState) {
      case FINISHED:
        throw new IllegalStateException("Matching is already finished");
      case MATCHED:
      case NOT_MATCHED:
        throw new IllegalStateException("'ifEq'/'get'/'orNull' call is expected");
      case SKIPPING:
        myState = State.MATCHED;
        break;
      case IGNORING:
        myState = State.NOT_MATCHED;
        break;
      case MATCHING:
        myState = State.MATCHED;
        //noinspection unchecked
        myValue = (T)fn.get();
    }
    return this;
  }
@Override
  public @NotNull ValueKey.BeforeIf<T> thenGet(@NotNull Supplier<? extends T1> fn)