private static bool CompileFlexShorthand(StylePropertyReader reader, out float grow, out float shrink, out Length basis)
        {
            grow   = 0f;
            shrink = 1f;
            basis  = Length.Auto();

            bool valid      = false;
            var  valueCount = reader.valueCount;

            if (valueCount == 1 && reader.IsValueType(0, StyleValueType.Keyword))
            {
                // Handle none | auto
                if (reader.IsKeyword(0, StyleValueKeyword.None))
                {
                    valid  = true;
                    grow   = 0f;
                    shrink = 0f;
                    basis  = Length.Auto();
                }
                else if (reader.IsKeyword(0, StyleValueKeyword.Auto))
                {
                    valid  = true;
                    grow   = 1f;
                    shrink = 1f;
                    basis  = Length.Auto();
                }
            }
            else if (valueCount <= 3)
            {
                // Handle [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
                valid = true;

                grow   = 0f;
                shrink = 1f;
                basis  = Length.Percent(0);

                bool growFound  = false;
                bool basisFound = false;
                for (int i = 0; i < valueCount && valid; i++)
                {
                    var valueType = reader.GetValueType(i);
                    if (valueType == StyleValueType.Dimension || valueType == StyleValueType.Keyword)
                    {
                        // Basis
                        if (basisFound)
                        {
                            valid = false;
                            break;
                        }

                        basisFound = true;
                        if (valueType == StyleValueType.Keyword)
                        {
                            if (reader.IsKeyword(i, StyleValueKeyword.Auto))
                            {
                                basis = Length.Auto();
                            }
                        }
                        else if (valueType == StyleValueType.Dimension)
                        {
                            basis = reader.ReadLength(i);
                        }

                        if (growFound && i != valueCount - 1)
                        {
                            // If grow is already processed basis must be the last value
                            valid = false;
                        }
                    }
                    else if (valueType == StyleValueType.Float)
                    {
                        var value = reader.ReadFloat(i);
                        if (!growFound)
                        {
                            growFound = true;
                            grow      = value;
                        }
                        else
                        {
                            shrink = value;
                        }
                    }
                    else
                    {
                        valid = false;
                    }
                }
            }

            return(valid);
        }
        private static bool CompileFlexShorthand(StylePropertyReader reader, out StyleFloat grow, out StyleFloat shrink, out StyleLength basis)
        {
            grow   = 0f;
            shrink = 1f;
            basis  = StyleKeyword.Auto;
            bool flag       = false;
            int  valueCount = reader.valueCount;
            bool flag2      = valueCount == 1 && reader.IsValueType(0, StyleValueType.Keyword);

            if (flag2)
            {
                bool flag3 = reader.IsKeyword(0, StyleValueKeyword.None);
                if (flag3)
                {
                    flag   = true;
                    grow   = 0f;
                    shrink = 0f;
                    basis  = StyleKeyword.Auto;
                }
                else
                {
                    bool flag4 = reader.IsKeyword(0, StyleValueKeyword.Auto);
                    if (flag4)
                    {
                        flag   = true;
                        grow   = 1f;
                        shrink = 1f;
                        basis  = StyleKeyword.Auto;
                    }
                }
            }
            else
            {
                bool flag5 = valueCount <= 3;
                if (flag5)
                {
                    flag   = true;
                    grow   = 0f;
                    shrink = 1f;
                    basis  = Length.Percent(0f);
                    bool flag6 = false;
                    bool flag7 = false;
                    int  num   = 0;
                    while (num < valueCount & flag)
                    {
                        StyleValueType valueType = reader.GetValueType(num);
                        bool           flag8     = valueType == StyleValueType.Dimension || valueType == StyleValueType.Keyword;
                        if (flag8)
                        {
                            bool flag9 = flag7;
                            if (flag9)
                            {
                                flag = false;
                                break;
                            }
                            flag7 = true;
                            bool flag10 = valueType == StyleValueType.Keyword;
                            if (flag10)
                            {
                                bool flag11 = reader.IsKeyword(num, StyleValueKeyword.Auto);
                                if (flag11)
                                {
                                    basis = StyleKeyword.Auto;
                                }
                            }
                            else
                            {
                                bool flag12 = valueType == StyleValueType.Dimension;
                                if (flag12)
                                {
                                    basis = reader.ReadStyleLength(num);
                                }
                            }
                            bool flag13 = flag6 && num != valueCount - 1;
                            if (flag13)
                            {
                                flag = false;
                            }
                        }
                        else
                        {
                            bool flag14 = valueType == StyleValueType.Float;
                            if (flag14)
                            {
                                StyleFloat styleFloat = reader.ReadStyleFloat(num);
                                bool       flag15     = !flag6;
                                if (flag15)
                                {
                                    flag6 = true;
                                    grow  = styleFloat;
                                }
                                else
                                {
                                    shrink = styleFloat;
                                }
                            }
                            else
                            {
                                flag = false;
                            }
                        }
                        num++;
                    }
                }
            }
            return(flag);
        }