public static @NotNull Color mix(final @NotNull Color c1, final @NotNull Color c2, double balance) {
    if (balance <= 0) return c1;
    if (balance >= 1) return c2;
    Supplier<Color> func = new MixedColorProducer(c1, c2, balance);
    return c1 instanceof JBColor || c2 instanceof JBColor ? JBColor.lazy(func) : func.get();
  }
public static @NotNull Color mix(final @NotNull Color c1, final @NotNull Color c2, double balance)