docs: @Override public GradientColor parse(JsonReader reader, float scale)
        throws IOException {
      List<Float> array = new ArrayList<>();
      // The array was started by Keyframe because it thought that this may be an array of keyframes
      // but peek returned a number so it considered it a static array of numbers.
      boolean isArray = reader.peek() == JsonToken.BEGIN_ARRAY;
      if (isArray) {
        reader.beginArray();
      }
      while (reader.hasNext()) {
        array.add((float) reader.nextDouble());
      }
      if(isArray) {
        reader.endArray();
      }
      if (colorPoints == -1) {
        colorPoints = array.size() / 4;
      }
  
      float[] positions = new float[colorPoints];
      int[] colors = new int[colorPoints];
  
      int r = 0;
      int g = 0;
      for (int i = 0; i < colorPoints * 4; i++) {
        int colorIndex = i / 4;
        double value = array.get(i);
        switch (i % 4) {
          case 0:
            // position
            positions[colorIndex] = (float) value;
            break;
          case 1:
            r = (int) (value * 255);
            break;
          case 2:
            g = (int) (value * 255);
            break;
          case 3:
            int b = (int) (value * 255);
            colors[colorIndex] = Color.argb(255, r, g, b);
            break;
        }
      }
  
      GradientColor gradientColor = new GradientColor(positions, colors);
      addOpacityStopsToGradientIfNeeded(gradientColor, array);
      return gradientColor;
    }