@NotNull
  public static <T> List<T> map(@NotNull Function<? super ThreeSide, ? extends T> function) {
    return Arrays.asList(function.fun(LEFT), function.fun(BASE), function.fun(RIGHT));
  }
@NotNull
  public static <T> List<T> map(@NotNull Function<? super ThreeSide, ? extends T> function)