protected boolean colorsEqual(AbstractColorsScheme otherScheme, @Nullable Predicate<? super ColorKey> colorKeyFilter) {
    if (colorMap.size() != otherScheme.colorMap.size()) return false;
    for (Map.Entry<ColorKey, Color> entry : colorMap.entrySet()) {
      Color c1 = entry.getValue();
      ColorKey key = entry.getKey();
      Color c2 = otherScheme.colorMap.get(key);
      if (!colorsEqual(c1, c2)) return false;
    }
    return true;
  }
protected boolean colorsEqual(AbstractColorsScheme otherScheme, @Nullable Predicate<? super ColorKey> colorKeyFilter)