// This file is automatically generated from CSSProperties.json by the process-css-properties.py script. Do not edit it.

#pragma once

#include <WebCore/StyleComputedStyleBase.h>

namespace WebCore {
namespace Style {

class ComputedStyleProperties : public ComputedStyleBase {
public:
    // 'appearance'
    inline StyleAppearance appearance() const;
    inline void setAppearance(StyleAppearance);
    static constexpr StyleAppearance initialAppearance();

    // 'color-scheme'
    inline Style::ColorScheme colorScheme() const;
    inline void setColorScheme(Style::ColorScheme);
    static inline Style::ColorScheme initialColorScheme();
    inline bool hasExplicitlySetColorScheme() const;
    inline void setHasExplicitlySetColorScheme(bool);

    // 'math-depth'
    inline Style::MathDepth mathDepth() const;
    inline void setMathDepth(Style::MathDepth);
    static constexpr Style::MathDepth initialMathDepth();

    // 'ruby-position'
    inline RubyPosition rubyPosition() const;
    inline void setRubyPosition(RubyPosition);
    static constexpr RubyPosition initialRubyPosition();

    // 'writing-mode'
    inline StyleWritingMode computedWritingMode() const;
    inline bool setWritingMode(StyleWritingMode);
    static constexpr StyleWritingMode initialWritingMode();
    inline bool hasExplicitlySetWritingMode() const;
    inline void setHasExplicitlySetWritingMode(bool);

    // 'direction'
    inline TextDirection computedDirection() const;
    inline bool setDirection(TextDirection);
    static constexpr TextDirection initialDirection();
    inline bool hasExplicitlySetDirection() const;
    inline void setHasExplicitlySetDirection(bool);

    // 'display'
    constexpr Style::Display display() const;
    inline void setDisplay(Style::Display);
    static constexpr Style::Display initialDisplay();

    // 'font-family'
    inline Style::FontFamilies fontFamily() const;
    inline void setFontFamily(Style::FontFamilies);

    // 'font-feature-settings'
    inline Style::FontFeatureSettings fontFeatureSettings() const;
    inline void setFontFeatureSettings(Style::FontFeatureSettings);
    static inline Style::FontFeatureSettings initialFontFeatureSettings();

    // 'font-kerning'
    inline Kerning fontKerning() const;
    inline void setFontKerning(Kerning);
    static constexpr Kerning initialFontKerning();

    // 'font-optical-sizing'
    inline FontOpticalSizing fontOpticalSizing() const;
    inline void setFontOpticalSizing(FontOpticalSizing);
    static constexpr FontOpticalSizing initialFontOpticalSizing();

    // 'font-palette'
    inline Style::FontPalette fontPalette() const;
    inline void setFontPalette(Style::FontPalette);
    static inline Style::FontPalette initialFontPalette();

    // 'font-size'
    inline float specifiedFontSize() const;
    inline void setFontSize(float);

    // 'font-size-adjust'
    inline Style::FontSizeAdjust fontSizeAdjust() const;
    inline void setFontSizeAdjust(Style::FontSizeAdjust);
    static inline Style::FontSizeAdjust initialFontSizeAdjust();

    // 'font-style'
    inline Style::FontStyle fontStyle() const;
    inline void setFontStyle(Style::FontStyle);
    static inline Style::FontStyle initialFontStyle();

    // 'font-synthesis-small-caps'
    inline FontSynthesisLonghandValue fontSynthesisSmallCaps() const;
    inline void setFontSynthesisSmallCaps(FontSynthesisLonghandValue);
    static constexpr FontSynthesisLonghandValue initialFontSynthesisSmallCaps();

    // 'font-synthesis-style'
    inline FontSynthesisStyleLonghandValue fontSynthesisStyle() const;
    inline void setFontSynthesisStyle(FontSynthesisStyleLonghandValue);
    static constexpr FontSynthesisStyleLonghandValue initialFontSynthesisStyle();

    // 'font-synthesis-weight'
    inline FontSynthesisLonghandValue fontSynthesisWeight() const;
    inline void setFontSynthesisWeight(FontSynthesisLonghandValue);
    static constexpr FontSynthesisLonghandValue initialFontSynthesisWeight();

    // 'font-variant-alternates'
    inline Style::FontVariantAlternates fontVariantAlternates() const;
    inline void setFontVariantAlternates(Style::FontVariantAlternates);
    static inline Style::FontVariantAlternates initialFontVariantAlternates();

    // 'font-variant-caps'
    inline FontVariantCaps fontVariantCaps() const;
    inline void setFontVariantCaps(FontVariantCaps);
    static constexpr FontVariantCaps initialFontVariantCaps();

    // 'font-variant-east-asian'
    inline Style::FontVariantEastAsian fontVariantEastAsian() const;
    inline void setFontVariantEastAsian(Style::FontVariantEastAsian);
    static constexpr Style::FontVariantEastAsian initialFontVariantEastAsian();

    // 'font-variant-emoji'
    inline FontVariantEmoji fontVariantEmoji() const;
    inline void setFontVariantEmoji(FontVariantEmoji);
    static constexpr FontVariantEmoji initialFontVariantEmoji();

    // 'font-variant-ligatures'
    inline Style::FontVariantLigatures fontVariantLigatures() const;
    inline void setFontVariantLigatures(Style::FontVariantLigatures);
    static constexpr Style::FontVariantLigatures initialFontVariantLigatures();

    // 'font-variant-numeric'
    inline Style::FontVariantNumeric fontVariantNumeric() const;
    inline void setFontVariantNumeric(Style::FontVariantNumeric);
    static constexpr Style::FontVariantNumeric initialFontVariantNumeric();

    // 'font-variant-position'
    inline FontVariantPosition fontVariantPosition() const;
    inline void setFontVariantPosition(FontVariantPosition);
    static constexpr FontVariantPosition initialFontVariantPosition();

    // 'font-variation-settings'
    inline Style::FontVariationSettings fontVariationSettings() const;
    inline void setFontVariationSettings(Style::FontVariationSettings);
    static inline Style::FontVariationSettings initialFontVariationSettings();

    // 'font-weight'
    inline Style::FontWeight fontWeight() const;
    inline void setFontWeight(Style::FontWeight);
    static inline Style::FontWeight initialFontWeight();

    // 'font-width'
    inline Style::FontWidth fontWidth() const;
    inline void setFontWidth(Style::FontWidth);
    static inline Style::FontWidth initialFontWidth();

    // 'text-orientation'
    inline TextOrientation computedTextOrientation() const;
    inline bool setTextOrientation(TextOrientation);
    static constexpr TextOrientation initialTextOrientation();

    // 'text-rendering'
    inline TextRenderingMode textRendering() const;
    inline void setTextRendering(TextRenderingMode);
    static constexpr TextRenderingMode initialTextRendering();

    // 'zoom'
    inline Style::Zoom zoom() const;
    inline bool setZoom(Style::Zoom);
    static constexpr Style::Zoom initialZoom();

    // '-webkit-font-smoothing'
    inline FontSmoothingMode fontSmoothing() const;
    inline void setFontSmoothing(FontSmoothingMode);
    static constexpr FontSmoothingMode initialFontSmoothing();

    // '-webkit-locale'
    inline Style::WebkitLocale locale() const;
    inline void setLocale(Style::WebkitLocale);
    static inline Style::WebkitLocale initialLocale();

    // '-webkit-text-size-adjust'
    inline Style::TextSizeAdjust textSizeAdjust() const;
    inline void setTextSizeAdjust(Style::TextSizeAdjust);
    static constexpr Style::TextSizeAdjust initialTextSizeAdjust();

    // '-webkit-text-zoom'
    inline TextZoom textZoom() const;
    inline void setTextZoom(TextZoom);
    static constexpr TextZoom initialTextZoom();

    // 'letter-spacing'
    inline const Style::LetterSpacing& computedLetterSpacing() const;
    inline void setLetterSpacing(Style::LetterSpacing&&);
    static inline Style::LetterSpacing initialLetterSpacing();

    // 'text-autospace'
    inline Style::TextAutospace textAutospace() const;
    inline void setTextAutospace(Style::TextAutospace);
    static constexpr Style::TextAutospace initialTextAutospace();

    // 'text-spacing-trim'
    inline Style::TextSpacingTrim textSpacingTrim() const;
    inline void setTextSpacingTrim(Style::TextSpacingTrim);
    static constexpr Style::TextSpacingTrim initialTextSpacingTrim();

    // 'word-spacing'
    inline const Style::WordSpacing& computedWordSpacing() const;
    inline void setWordSpacing(Style::WordSpacing&&);
    static inline Style::WordSpacing initialWordSpacing();

    // 'accent-color'
    inline const Style::AccentColor& accentColor() const;
    inline void setAccentColor(Style::AccentColor&&);
    static inline Style::AccentColor initialAccentColor();
    inline decltype(auto) accentColorResolver() const;
    WebCore::Color accentColorResolvingCurrentColor() const;
    WebCore::Color accentColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentAccentColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentAccentColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'align-content'
    inline Style::AlignContent alignContent() const;
    inline void setAlignContent(Style::AlignContent);
    static constexpr Style::AlignContent initialAlignContent();

    // 'align-items'
    inline Style::AlignItems alignItems() const;
    inline void setAlignItems(Style::AlignItems);
    static constexpr Style::AlignItems initialAlignItems();

    // 'align-self'
    inline Style::AlignSelf alignSelf() const;
    inline void setAlignSelf(Style::AlignSelf);
    static constexpr Style::AlignSelf initialAlignSelf();

    // 'alignment-baseline'
    inline AlignmentBaseline alignmentBaseline() const;
    inline void setAlignmentBaseline(AlignmentBaseline);
    static constexpr AlignmentBaseline initialAlignmentBaseline();

    // 'anchor-name'
    inline const Style::AnchorNames& anchorNames() const;
    inline void setAnchorNames(Style::AnchorNames&&);
    static inline Style::AnchorNames initialAnchorNames();

    // 'anchor-scope'
    inline const Style::NameScope& anchorScope() const;
    inline void setAnchorScope(Style::NameScope&&);
    static inline Style::NameScope initialAnchorScope();

    // 'aspect-ratio'
    inline const Style::AspectRatio& aspectRatio() const;
    inline void setAspectRatio(Style::AspectRatio&&);
    static inline Style::AspectRatio initialAspectRatio();

    // 'backdrop-filter'
    inline const Style::Filter& backdropFilter() const;
    inline void setBackdropFilter(Style::Filter&&);
    static inline Style::Filter initialBackdropFilter();

    // 'backface-visibility'
    inline BackfaceVisibility backfaceVisibility() const;
    inline void setBackfaceVisibility(BackfaceVisibility);
    static constexpr BackfaceVisibility initialBackfaceVisibility();

    // 'background-color'
    inline const Style::Color& backgroundColor() const;
    inline void setBackgroundColor(Style::Color&&);
    static inline Style::Color initialBackgroundColor();
    inline const Style::Color& visitedLinkBackgroundColor() const;
    inline void setVisitedLinkBackgroundColor(Style::Color&&);
    inline decltype(auto) backgroundColorResolver() const;
    WebCore::Color backgroundColorResolvingCurrentColor() const;
    WebCore::Color backgroundColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkBackgroundColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkBackgroundColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentBackgroundColor(OptionSet<PaintBehavior> = { }) const;
    WEBCORE_EXPORT WebCore::Color visitedDependentBackgroundColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'baseline-shift'
    inline const Style::SVGBaselineShift& baselineShift() const;
    inline void setBaselineShift(Style::SVGBaselineShift&&);
    static inline Style::SVGBaselineShift initialBaselineShift();

    // 'block-ellipsis'
    inline const Style::BlockEllipsis& blockEllipsis() const;
    inline void setBlockEllipsis(Style::BlockEllipsis&&);
    static inline Style::BlockEllipsis initialBlockEllipsis();

    // 'block-step-align'
    inline BlockStepAlign blockStepAlign() const;
    inline void setBlockStepAlign(BlockStepAlign);
    static constexpr BlockStepAlign initialBlockStepAlign();

    // 'block-step-insert'
    inline BlockStepInsert blockStepInsert() const;
    inline void setBlockStepInsert(BlockStepInsert);
    static constexpr BlockStepInsert initialBlockStepInsert();

    // 'block-step-round'
    inline BlockStepRound blockStepRound() const;
    inline void setBlockStepRound(BlockStepRound);
    static constexpr BlockStepRound initialBlockStepRound();

    // 'block-step-size'
    inline const Style::BlockStepSize& blockStepSize() const;
    inline void setBlockStepSize(Style::BlockStepSize&&);
    static inline Style::BlockStepSize initialBlockStepSize();

    // 'border-collapse'
    inline BorderCollapse borderCollapse() const;
    inline void setBorderCollapse(BorderCollapse);
    static constexpr BorderCollapse initialBorderCollapse();

    // 'border-image-outset'
    inline const Style::BorderImageOutset& borderImageOutset() const;
    inline void setBorderImageOutset(Style::BorderImageOutset&&);
    static inline Style::BorderImageOutset initialBorderImageOutset();

    // 'border-image-repeat'
    inline const Style::BorderImageRepeat& borderImageRepeat() const;
    inline void setBorderImageRepeat(Style::BorderImageRepeat&&);
    static inline Style::BorderImageRepeat initialBorderImageRepeat();

    // 'border-image-slice'
    inline const Style::BorderImageSlice& borderImageSlice() const;
    inline void setBorderImageSlice(Style::BorderImageSlice&&);
    static inline Style::BorderImageSlice initialBorderImageSlice();

    // 'border-image-source'
    inline const Style::BorderImageSource& borderImageSource() const;
    inline void setBorderImageSource(Style::BorderImageSource&&);
    static inline Style::BorderImageSource initialBorderImageSource();

    // 'border-image-width'
    inline const Style::BorderImageWidth& borderImageWidth() const;
    inline void setBorderImageWidth(Style::BorderImageWidth&&);
    static inline Style::BorderImageWidth initialBorderImageWidth();

    // 'box-shadow'
    inline const Style::BoxShadows& boxShadow() const;
    inline void setBoxShadow(Style::BoxShadows&&);
    static inline Style::BoxShadows initialBoxShadow();

    // 'box-sizing'
    inline BoxSizing boxSizing() const;
    inline void setBoxSizing(BoxSizing);
    static constexpr BoxSizing initialBoxSizing();

    // 'break-after'
    inline BreakBetween breakAfter() const;
    inline void setBreakAfter(BreakBetween);
    static constexpr BreakBetween initialBreakAfter();

    // 'break-before'
    inline BreakBetween breakBefore() const;
    inline void setBreakBefore(BreakBetween);
    static constexpr BreakBetween initialBreakBefore();

    // 'break-inside'
    inline BreakInside breakInside() const;
    inline void setBreakInside(BreakInside);
    static constexpr BreakInside initialBreakInside();

    // 'buffered-rendering'
    inline BufferedRendering bufferedRendering() const;
    inline void setBufferedRendering(BufferedRendering);
    static constexpr BufferedRendering initialBufferedRendering();

    // 'caption-side'
    inline CaptionSide captionSide() const;
    inline void setCaptionSide(CaptionSide);
    static constexpr CaptionSide initialCaptionSide();

    // 'caret-color'
    inline const Style::CaretColor& caretColor() const;
    inline void setCaretColor(Style::CaretColor&&);
    static inline Style::CaretColor initialCaretColor();
    inline const Style::CaretColor& visitedLinkCaretColor() const;
    inline void setVisitedLinkCaretColor(Style::CaretColor&&);
    inline decltype(auto) caretColorResolver() const;
    WebCore::Color caretColorResolvingCurrentColor() const;
    WebCore::Color caretColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkCaretColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkCaretColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentCaretColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentCaretColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'clear'
    inline Clear clear() const;
    inline void setClear(Clear);
    static constexpr Clear initialClear();

    // 'clip'
    inline const Style::Clip& clip() const;
    inline void setClip(Style::Clip&&);
    static inline Style::Clip initialClip();

    // 'clip-path'
    inline const Style::ClipPath& clipPath() const;
    inline void setClipPath(Style::ClipPath&&);
    static inline Style::ClipPath initialClipPath();

    // 'clip-rule'
    inline WindRule clipRule() const;
    inline void setClipRule(WindRule);
    static constexpr WindRule initialClipRule();

    // 'color'
    WEBCORE_EXPORT const WebCore::Color& color() const;
    inline void setColor(WebCore::Color&&);
    inline const WebCore::Color& visitedLinkColor() const;
    inline void setVisitedLinkColor(WebCore::Color&&);
    inline decltype(auto) colorResolver() const;
    WebCore::Color colorResolvingCurrentColor() const;
    WebCore::Color colorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkColorResolvingCurrentColorApplyingColorFilter() const;
    WEBCORE_EXPORT WebCore::Color visitedDependentColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;
    inline bool hasExplicitlySetColor() const;
    inline void setHasExplicitlySetColor(bool);

    // 'color-interpolation'
    inline ColorInterpolation colorInterpolation() const;
    inline void setColorInterpolation(ColorInterpolation);
    static constexpr ColorInterpolation initialColorInterpolation();

    // 'color-interpolation-filters'
    inline ColorInterpolation colorInterpolationFilters() const;
    inline void setColorInterpolationFilters(ColorInterpolation);
    static constexpr ColorInterpolation initialColorInterpolationFilters();

    // 'column-count'
    inline Style::ColumnCount columnCount() const;
    inline void setColumnCount(Style::ColumnCount);
    static constexpr Style::ColumnCount initialColumnCount();

    // 'column-fill'
    inline ColumnFill columnFill() const;
    inline void setColumnFill(ColumnFill);
    static constexpr ColumnFill initialColumnFill();

    // 'column-gap'
    inline const Style::GapGutter& columnGap() const;
    inline void setColumnGap(Style::GapGutter&&);
    static inline Style::GapGutter initialColumnGap();

    // 'column-rule-color'
    inline const Style::Color& columnRuleColor() const;
    inline void setColumnRuleColor(Style::Color&&);
    static inline Style::Color initialColumnRuleColor();
    inline const Style::Color& visitedLinkColumnRuleColor() const;
    inline void setVisitedLinkColumnRuleColor(Style::Color&&);
    inline decltype(auto) columnRuleColorResolver() const;
    WebCore::Color columnRuleColorResolvingCurrentColor() const;
    WebCore::Color columnRuleColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkColumnRuleColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkColumnRuleColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentColumnRuleColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentColumnRuleColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'column-rule-style'
    inline BorderStyle columnRuleStyle() const;
    inline void setColumnRuleStyle(BorderStyle);
    static constexpr BorderStyle initialColumnRuleStyle();

    // 'column-rule-width'
    inline const Style::LineWidth& columnRuleWidth() const;
    inline void setColumnRuleWidth(Style::LineWidth&&);
    static constexpr Style::LineWidth initialColumnRuleWidth();

    // 'column-span'
    inline ColumnSpan columnSpan() const;
    inline void setColumnSpan(ColumnSpan);
    static constexpr ColumnSpan initialColumnSpan();

    // 'column-width'
    inline Style::ColumnWidth columnWidth() const;
    inline void setColumnWidth(Style::ColumnWidth);
    static constexpr Style::ColumnWidth initialColumnWidth();

    // 'contain'
    inline Style::Contain contain() const;
    inline void setContain(Style::Contain);
    static constexpr Style::Contain initialContain();

    // 'container-name'
    inline const Style::ContainerNames& containerNames() const;
    inline void setContainerNames(Style::ContainerNames&&);
    static inline Style::ContainerNames initialContainerNames();

    // 'container-type'
    inline const Style::ContainerType& containerType() const;
    inline void setContainerType(Style::ContainerType&&);
    static inline Style::ContainerType initialContainerType();

    // 'content'
    inline const Style::Content& content() const;
    inline void setContent(Style::Content&&);
    static inline Style::Content initialContent();

    // 'content-visibility'
    inline ContentVisibility contentVisibility() const;
    inline void setContentVisibility(ContentVisibility);
    static constexpr ContentVisibility initialContentVisibility();

    // 'continue'
    inline OverflowContinue overflowContinue() const;
    inline void setOverflowContinue(OverflowContinue);
    static constexpr OverflowContinue initialOverflowContinue();

    // 'counter-increment'
    inline const Style::CounterIncrement& counterIncrement() const;
    inline void setCounterIncrement(Style::CounterIncrement&&);
    inline void didSetCounterIncrement();
    static inline Style::CounterIncrement initialCounterIncrement();

    // 'counter-reset'
    inline const Style::CounterReset& counterReset() const;
    inline void setCounterReset(Style::CounterReset&&);
    inline void didSetCounterReset();
    static inline Style::CounterReset initialCounterReset();

    // 'counter-set'
    inline const Style::CounterSet& counterSet() const;
    inline void setCounterSet(Style::CounterSet&&);
    inline void didSetCounterSet();
    static inline Style::CounterSet initialCounterSet();

    // 'cursor'
    inline Style::Cursor cursor() const;
    inline void setCursor(Style::Cursor);
    static inline Style::Cursor initialCursor();

    // 'cx'
    inline const Style::SVGCenterCoordinateComponent& cx() const;
    inline void setCx(Style::SVGCenterCoordinateComponent&&);
    static inline Style::SVGCenterCoordinateComponent initialCx();

    // 'cy'
    inline const Style::SVGCenterCoordinateComponent& cy() const;
    inline void setCy(Style::SVGCenterCoordinateComponent&&);
    static inline Style::SVGCenterCoordinateComponent initialCy();

    // 'd'
    inline const Style::SVGPathData& d() const;
    inline void setD(Style::SVGPathData&&);
    static inline Style::SVGPathData initialD();

    // 'dominant-baseline'
    inline DominantBaseline dominantBaseline() const;
    inline void setDominantBaseline(DominantBaseline);
    static constexpr DominantBaseline initialDominantBaseline();

    // 'dynamic-range-limit'
    inline const Style::DynamicRangeLimit& dynamicRangeLimit() const;
    inline void setDynamicRangeLimit(Style::DynamicRangeLimit&&);
    static inline Style::DynamicRangeLimit initialDynamicRangeLimit();

    // 'empty-cells'
    inline EmptyCell emptyCells() const;
    inline void setEmptyCells(EmptyCell);
    static constexpr EmptyCell initialEmptyCells();

    // 'field-sizing'
    inline FieldSizing fieldSizing() const;
    inline void setFieldSizing(FieldSizing);
    static constexpr FieldSizing initialFieldSizing();

    // 'fill'
    inline const Style::SVGPaint& fill() const;
    inline void setFill(Style::SVGPaint&&);
    static inline Style::SVGPaint initialFill();
    inline const Style::SVGPaint& visitedLinkFill() const;
    inline void setVisitedLinkFill(Style::SVGPaint&&);
    inline decltype(auto) fillResolver() const;
    WebCore::Color fillResolvingCurrentColor() const;
    WebCore::Color fillResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkFillResolvingCurrentColor() const;
    WebCore::Color visitedLinkFillResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentFill(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentFillApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'fill-opacity'
    inline Style::Opacity fillOpacity() const;
    inline void setFillOpacity(Style::Opacity);
    static constexpr Style::Opacity initialFillOpacity();

    // 'fill-rule'
    inline WindRule fillRule() const;
    inline void setFillRule(WindRule);
    static constexpr WindRule initialFillRule();

    // 'filter'
    inline const Style::Filter& filter() const;
    inline void setFilter(Style::Filter&&);
    static inline Style::Filter initialFilter();

    // 'flex-basis'
    inline const Style::FlexBasis& flexBasis() const;
    inline void setFlexBasis(Style::FlexBasis&&);
    static inline Style::FlexBasis initialFlexBasis();

    // 'flex-direction'
    inline FlexDirection flexDirection() const;
    inline void setFlexDirection(FlexDirection);
    static constexpr FlexDirection initialFlexDirection();

    // 'flex-grow'
    inline Style::FlexGrow flexGrow() const;
    inline void setFlexGrow(Style::FlexGrow);
    static constexpr Style::FlexGrow initialFlexGrow();

    // 'flex-shrink'
    inline Style::FlexShrink flexShrink() const;
    inline void setFlexShrink(Style::FlexShrink);
    static constexpr Style::FlexShrink initialFlexShrink();

    // 'flex-wrap'
    inline FlexWrap flexWrap() const;
    inline void setFlexWrap(FlexWrap);
    static constexpr FlexWrap initialFlexWrap();

    // 'float'
    inline Float floating() const;
    inline void setFloating(Float);
    static constexpr Float initialFloating();

    // 'flood-color'
    inline const Style::Color& floodColor() const;
    inline void setFloodColor(Style::Color&&);
    static inline Style::Color initialFloodColor();
    inline decltype(auto) floodColorResolver() const;
    WebCore::Color floodColorResolvingCurrentColor() const;
    WebCore::Color floodColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentFloodColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentFloodColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'flood-opacity'
    inline Style::Opacity floodOpacity() const;
    inline void setFloodOpacity(Style::Opacity);
    static constexpr Style::Opacity initialFloodOpacity();

    // 'flow-tolerance'
    inline const Style::FlowTolerance& flowTolerance() const;
    inline void setFlowTolerance(Style::FlowTolerance&&);
    static inline Style::FlowTolerance initialFlowTolerance();

    // 'glyph-orientation-vertical'
    inline Style::SVGGlyphOrientationVertical glyphOrientationVertical() const;
    inline void setGlyphOrientationVertical(Style::SVGGlyphOrientationVertical);
    static constexpr Style::SVGGlyphOrientationVertical initialGlyphOrientationVertical();

    // 'grid-auto-columns'
    inline const Style::GridTrackSizes& gridAutoColumns() const;
    inline void setGridAutoColumns(Style::GridTrackSizes&&);
    static inline Style::GridTrackSizes initialGridAutoColumns();

    // 'grid-auto-flow'
    inline Style::GridAutoFlow gridAutoFlow() const;
    inline void setGridAutoFlow(Style::GridAutoFlow);
    static constexpr Style::GridAutoFlow initialGridAutoFlow();

    // 'grid-auto-rows'
    inline const Style::GridTrackSizes& gridAutoRows() const;
    inline void setGridAutoRows(Style::GridTrackSizes&&);
    static inline Style::GridTrackSizes initialGridAutoRows();

    // 'grid-column-end'
    inline const Style::GridPosition& gridItemColumnEnd() const;
    inline void setGridItemColumnEnd(Style::GridPosition&&);
    static inline Style::GridPosition initialGridItemColumnEnd();

    // 'grid-column-start'
    inline const Style::GridPosition& gridItemColumnStart() const;
    inline void setGridItemColumnStart(Style::GridPosition&&);
    static inline Style::GridPosition initialGridItemColumnStart();

    // 'grid-row-end'
    inline const Style::GridPosition& gridItemRowEnd() const;
    inline void setGridItemRowEnd(Style::GridPosition&&);
    static inline Style::GridPosition initialGridItemRowEnd();

    // 'grid-row-start'
    inline const Style::GridPosition& gridItemRowStart() const;
    inline void setGridItemRowStart(Style::GridPosition&&);
    static inline Style::GridPosition initialGridItemRowStart();

    // 'grid-template-areas'
    inline const Style::GridTemplateAreas& gridTemplateAreas() const;
    inline void setGridTemplateAreas(Style::GridTemplateAreas&&);
    static inline Style::GridTemplateAreas initialGridTemplateAreas();

    // 'grid-template-columns'
    inline const Style::GridTemplateList& gridTemplateColumns() const;
    inline void setGridTemplateColumns(Style::GridTemplateList&&);
    static inline Style::GridTemplateList initialGridTemplateColumns();

    // 'grid-template-rows'
    inline const Style::GridTemplateList& gridTemplateRows() const;
    inline void setGridTemplateRows(Style::GridTemplateList&&);
    static inline Style::GridTemplateList initialGridTemplateRows();

    // 'hanging-punctuation'
    inline Style::HangingPunctuation hangingPunctuation() const;
    inline void setHangingPunctuation(Style::HangingPunctuation);
    static constexpr Style::HangingPunctuation initialHangingPunctuation();

    // 'hyphenate-character'
    inline const Style::HyphenateCharacter& hyphenateCharacter() const;
    inline void setHyphenateCharacter(Style::HyphenateCharacter&&);
    static inline Style::HyphenateCharacter initialHyphenateCharacter();

    // 'hyphens'
    inline Hyphens hyphens() const;
    inline void setHyphens(Hyphens);
    static constexpr Hyphens initialHyphens();

    // 'image-orientation'
    inline Style::ImageOrientation imageOrientation() const;
    inline void setImageOrientation(Style::ImageOrientation);
    static constexpr Style::ImageOrientation initialImageOrientation();

    // 'image-rendering'
    inline ImageRendering imageRendering() const;
    inline void setImageRendering(ImageRendering);
    static constexpr ImageRendering initialImageRendering();

    // 'input-security'
    inline InputSecurity inputSecurity() const;
    inline void setInputSecurity(InputSecurity);
    static constexpr InputSecurity initialInputSecurity();

    // 'isolation'
    inline Isolation isolation() const;
    inline void setIsolation(Isolation);
    static constexpr Isolation initialIsolation();

    // 'justify-content'
    inline Style::JustifyContent justifyContent() const;
    inline void setJustifyContent(Style::JustifyContent);
    static constexpr Style::JustifyContent initialJustifyContent();

    // 'justify-items'
    inline Style::JustifyItems justifyItems() const;
    inline void setJustifyItems(Style::JustifyItems);
    static constexpr Style::JustifyItems initialJustifyItems();

    // 'justify-self'
    inline Style::JustifySelf justifySelf() const;
    inline void setJustifySelf(Style::JustifySelf);
    static constexpr Style::JustifySelf initialJustifySelf();

    // 'lighting-color'
    inline const Style::Color& lightingColor() const;
    inline void setLightingColor(Style::Color&&);
    static inline Style::Color initialLightingColor();
    inline decltype(auto) lightingColorResolver() const;
    WebCore::Color lightingColorResolvingCurrentColor() const;
    WebCore::Color lightingColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentLightingColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentLightingColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'line-break'
    inline LineBreak lineBreak() const;
    inline void setLineBreak(LineBreak);
    static constexpr LineBreak initialLineBreak();

    // 'line-fit-edge'
    inline Style::LineFitEdge lineFitEdge() const;
    inline void setLineFitEdge(Style::LineFitEdge);
    static constexpr Style::LineFitEdge initialLineFitEdge();

    // 'line-height'
    inline const Style::LineHeight& lineHeight() const;
    inline void setLineHeight(Style::LineHeight&&);
    static inline Style::LineHeight initialLineHeight();

    // 'list-style-image'
    inline const Style::ImageOrNone& listStyleImage() const;
    inline void setListStyleImage(Style::ImageOrNone&&);
    static inline Style::ImageOrNone initialListStyleImage();

    // 'list-style-position'
    inline ListStylePosition listStylePosition() const;
    inline void setListStylePosition(ListStylePosition);
    static constexpr ListStylePosition initialListStylePosition();

    // 'list-style-type'
    inline const Style::ListStyleType& listStyleType() const;
    inline void setListStyleType(Style::ListStyleType&&);
    static inline Style::ListStyleType initialListStyleType();

    // 'margin-trim'
    inline Style::MarginTrim marginTrim() const;
    inline void setMarginTrim(Style::MarginTrim);
    static constexpr Style::MarginTrim initialMarginTrim();

    // 'marker-end'
    inline const Style::SVGMarkerResource& markerEnd() const;
    inline void setMarkerEnd(Style::SVGMarkerResource&&);
    static inline Style::SVGMarkerResource initialMarkerEnd();

    // 'marker-mid'
    inline const Style::SVGMarkerResource& markerMid() const;
    inline void setMarkerMid(Style::SVGMarkerResource&&);
    static inline Style::SVGMarkerResource initialMarkerMid();

    // 'marker-start'
    inline const Style::SVGMarkerResource& markerStart() const;
    inline void setMarkerStart(Style::SVGMarkerResource&&);
    static inline Style::SVGMarkerResource initialMarkerStart();

    // 'mask-border-outset'
    inline const Style::MaskBorderOutset& maskBorderOutset() const;
    inline void setMaskBorderOutset(Style::MaskBorderOutset&&);
    static inline Style::MaskBorderOutset initialMaskBorderOutset();

    // 'mask-border-repeat'
    inline const Style::MaskBorderRepeat& maskBorderRepeat() const;
    inline void setMaskBorderRepeat(Style::MaskBorderRepeat&&);
    static inline Style::MaskBorderRepeat initialMaskBorderRepeat();

    // 'mask-border-slice'
    inline const Style::MaskBorderSlice& maskBorderSlice() const;
    inline void setMaskBorderSlice(Style::MaskBorderSlice&&);
    static inline Style::MaskBorderSlice initialMaskBorderSlice();

    // 'mask-border-source'
    inline const Style::MaskBorderSource& maskBorderSource() const;
    inline void setMaskBorderSource(Style::MaskBorderSource&&);
    static inline Style::MaskBorderSource initialMaskBorderSource();

    // 'mask-border-width'
    inline const Style::MaskBorderWidth& maskBorderWidth() const;
    inline void setMaskBorderWidth(Style::MaskBorderWidth&&);
    static inline Style::MaskBorderWidth initialMaskBorderWidth();

    // 'mask-type'
    inline MaskType maskType() const;
    inline void setMaskType(MaskType);
    static constexpr MaskType initialMaskType();

    // 'math-shift'
    inline MathShift mathShift() const;
    inline void setMathShift(MathShift);
    static constexpr MathShift initialMathShift();

    // 'math-style'
    inline MathStyle mathStyle() const;
    inline void setMathStyle(MathStyle);
    static constexpr MathStyle initialMathStyle();

    // 'max-lines'
    inline Style::MaximumLines maxLines() const;
    inline void setMaxLines(Style::MaximumLines);
    static constexpr Style::MaximumLines initialMaxLines();

    // 'mix-blend-mode'
    inline BlendMode blendMode() const;
    inline void setBlendMode(BlendMode);
    static constexpr BlendMode initialBlendMode();

    // 'object-fit'
    inline ObjectFit objectFit() const;
    inline void setObjectFit(ObjectFit);
    static constexpr ObjectFit initialObjectFit();

    // 'object-position'
    inline const Style::ObjectPosition& objectPosition() const;
    inline void setObjectPosition(Style::ObjectPosition&&);
    static inline Style::ObjectPosition initialObjectPosition();

    // 'offset-anchor'
    inline const Style::OffsetAnchor& offsetAnchor() const;
    inline void setOffsetAnchor(Style::OffsetAnchor&&);
    static inline Style::OffsetAnchor initialOffsetAnchor();

    // 'offset-distance'
    inline const Style::OffsetDistance& offsetDistance() const;
    inline void setOffsetDistance(Style::OffsetDistance&&);
    static inline Style::OffsetDistance initialOffsetDistance();

    // 'offset-path'
    inline const Style::OffsetPath& offsetPath() const;
    inline void setOffsetPath(Style::OffsetPath&&);
    static inline Style::OffsetPath initialOffsetPath();

    // 'offset-position'
    inline const Style::OffsetPosition& offsetPosition() const;
    inline void setOffsetPosition(Style::OffsetPosition&&);
    static inline Style::OffsetPosition initialOffsetPosition();

    // 'offset-rotate'
    inline const Style::OffsetRotate& offsetRotate() const;
    inline void setOffsetRotate(Style::OffsetRotate&&);
    static constexpr Style::OffsetRotate initialOffsetRotate();

    // 'opacity'
    inline Style::Opacity opacity() const;
    inline void setOpacity(Style::Opacity);
    static constexpr Style::Opacity initialOpacity();

    // 'order'
    inline Style::Order order() const;
    inline void setOrder(Style::Order);
    static constexpr Style::Order initialOrder();

    // 'orphans'
    inline Style::Orphans orphans() const;
    inline void setOrphans(Style::Orphans);
    static constexpr Style::Orphans initialOrphans();

    // 'outline-color'
    inline const Style::Color& outlineColor() const;
    inline void setOutlineColor(Style::Color&&);
    static inline Style::Color initialOutlineColor();
    inline const Style::Color& visitedLinkOutlineColor() const;
    inline void setVisitedLinkOutlineColor(Style::Color&&);
    inline decltype(auto) outlineColorResolver() const;
    WebCore::Color outlineColorResolvingCurrentColor() const;
    WebCore::Color outlineColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkOutlineColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkOutlineColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentOutlineColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentOutlineColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'outline-offset'
    inline const Style::OutlineOffset& outlineOffset() const;
    inline void setOutlineOffset(Style::OutlineOffset&&);
    static inline Style::OutlineOffset initialOutlineOffset();

    // 'outline-style'
    inline OutlineStyle outlineStyle() const;
    inline void setOutlineStyle(OutlineStyle);
    static constexpr OutlineStyle initialOutlineStyle();

    // 'outline-width'
    inline const Style::LineWidth& outlineWidth() const;
    inline void setOutlineWidth(Style::LineWidth&&);
    static constexpr Style::LineWidth initialOutlineWidth();

    // 'overflow-anchor'
    inline OverflowAnchor overflowAnchor() const;
    inline void setOverflowAnchor(OverflowAnchor);
    static constexpr OverflowAnchor initialOverflowAnchor();

    // 'overflow-clip-margin'
    inline const Style::OverflowClipMargin& overflowClipMargin() const;
    inline void setOverflowClipMargin(Style::OverflowClipMargin&&);
    static inline Style::OverflowClipMargin initialOverflowClipMargin();

    // 'overflow-wrap'
    inline OverflowWrap overflowWrap() const;
    inline void setOverflowWrap(OverflowWrap);
    static constexpr OverflowWrap initialOverflowWrap();

    // 'paint-order'
    inline Style::SVGPaintOrder paintOrder() const;
    inline void setPaintOrder(Style::SVGPaintOrder);
    static constexpr Style::SVGPaintOrder initialPaintOrder();

    // 'perspective'
    inline const Style::Perspective& perspective() const;
    inline void setPerspective(Style::Perspective&&);
    static inline Style::Perspective initialPerspective();

    // 'perspective-origin-x'
    inline const Style::PerspectiveOriginX& perspectiveOriginX() const;
    inline void setPerspectiveOriginX(Style::PerspectiveOriginX&&);
    static inline Style::PerspectiveOriginX initialPerspectiveOriginX();

    // 'perspective-origin-y'
    inline const Style::PerspectiveOriginY& perspectiveOriginY() const;
    inline void setPerspectiveOriginY(Style::PerspectiveOriginY&&);
    static inline Style::PerspectiveOriginY initialPerspectiveOriginY();

    // 'pointer-events'
    inline PointerEvents pointerEvents() const;
    inline void setPointerEvents(PointerEvents);
    static constexpr PointerEvents initialPointerEvents();

    // 'position'
    inline PositionType position() const;
    inline void setPosition(PositionType);
    static constexpr PositionType initialPosition();

    // 'position-anchor'
    inline const Style::PositionAnchor& positionAnchor() const;
    inline void setPositionAnchor(Style::PositionAnchor&&);
    static inline Style::PositionAnchor initialPositionAnchor();

    // 'position-area'
    inline Style::PositionArea positionArea() const;
    inline void setPositionArea(Style::PositionArea);
    static inline Style::PositionArea initialPositionArea();

    // 'position-try-fallbacks'
    inline const Style::PositionTryFallbacks& positionTryFallbacks() const;
    inline void setPositionTryFallbacks(Style::PositionTryFallbacks&&);
    static inline Style::PositionTryFallbacks initialPositionTryFallbacks();

    // 'position-try-order'
    inline Style::PositionTryOrder positionTryOrder() const;
    inline void setPositionTryOrder(Style::PositionTryOrder);
    static constexpr Style::PositionTryOrder initialPositionTryOrder();

    // 'position-visibility'
    inline Style::PositionVisibility positionVisibility() const;
    inline void setPositionVisibility(Style::PositionVisibility);
    static constexpr Style::PositionVisibility initialPositionVisibility();

    // 'print-color-adjust'
    inline PrintColorAdjust printColorAdjust() const;
    inline void setPrintColorAdjust(PrintColorAdjust);
    static constexpr PrintColorAdjust initialPrintColorAdjust();

    // 'quotes'
    inline const Style::Quotes& quotes() const;
    inline void setQuotes(Style::Quotes&&);
    static inline Style::Quotes initialQuotes();

    // 'r'
    inline const Style::SVGRadius& r() const;
    inline void setR(Style::SVGRadius&&);
    static inline Style::SVGRadius initialR();

    // 'resize'
    inline Style::Resize resize() const;
    inline void setResize(Style::Resize);
    static constexpr Style::Resize initialResize();

    // 'rotate'
    inline const Style::Rotate& rotate() const;
    inline void setRotate(Style::Rotate&&);
    static inline Style::Rotate initialRotate();

    // 'row-gap'
    inline const Style::GapGutter& rowGap() const;
    inline void setRowGap(Style::GapGutter&&);
    static inline Style::GapGutter initialRowGap();

    // 'ruby-align'
    inline RubyAlign rubyAlign() const;
    inline void setRubyAlign(RubyAlign);
    static constexpr RubyAlign initialRubyAlign();

    // 'ruby-overhang'
    inline RubyOverhang rubyOverhang() const;
    inline void setRubyOverhang(RubyOverhang);
    static constexpr RubyOverhang initialRubyOverhang();

    // 'rx'
    inline const Style::SVGRadiusComponent& rx() const;
    inline void setRx(Style::SVGRadiusComponent&&);
    static inline Style::SVGRadiusComponent initialRx();

    // 'ry'
    inline const Style::SVGRadiusComponent& ry() const;
    inline void setRy(Style::SVGRadiusComponent&&);
    static inline Style::SVGRadiusComponent initialRy();

    // 'scale'
    inline const Style::Scale& scale() const;
    inline void setScale(Style::Scale&&);
    static inline Style::Scale initialScale();

    // 'scroll-behavior'
    inline Style::ScrollBehavior scrollBehavior() const;
    inline void setScrollBehavior(Style::ScrollBehavior);
    static constexpr Style::ScrollBehavior initialScrollBehavior();

    // 'scroll-snap-align'
    inline const Style::ScrollSnapAlign& scrollSnapAlign() const;
    inline void setScrollSnapAlign(Style::ScrollSnapAlign&&);
    static constexpr Style::ScrollSnapAlign initialScrollSnapAlign();

    // 'scroll-snap-stop'
    inline ScrollSnapStop scrollSnapStop() const;
    inline void setScrollSnapStop(ScrollSnapStop);
    static constexpr ScrollSnapStop initialScrollSnapStop();

    // 'scroll-snap-type'
    inline const Style::ScrollSnapType& scrollSnapType() const;
    inline void setScrollSnapType(Style::ScrollSnapType&&);
    static constexpr Style::ScrollSnapType initialScrollSnapType();

    // 'scrollbar-color'
    inline const Style::ScrollbarColor& scrollbarColor() const;
    inline void setScrollbarColor(Style::ScrollbarColor&&);
    static inline Style::ScrollbarColor initialScrollbarColor();

    // 'scrollbar-gutter'
    inline const Style::ScrollbarGutter& scrollbarGutter() const;
    inline void setScrollbarGutter(Style::ScrollbarGutter&&);
    static constexpr Style::ScrollbarGutter initialScrollbarGutter();

    // 'scrollbar-width'
    inline Style::ScrollbarWidth scrollbarWidth() const;
    inline void setScrollbarWidth(Style::ScrollbarWidth);
    static constexpr Style::ScrollbarWidth initialScrollbarWidth();

    // 'shape-image-threshold'
    inline Style::ShapeImageThreshold shapeImageThreshold() const;
    inline void setShapeImageThreshold(Style::ShapeImageThreshold);
    static constexpr Style::ShapeImageThreshold initialShapeImageThreshold();

    // 'shape-margin'
    inline const Style::ShapeMargin& shapeMargin() const;
    inline void setShapeMargin(Style::ShapeMargin&&);
    static inline Style::ShapeMargin initialShapeMargin();

    // 'shape-outside'
    inline const Style::ShapeOutside& shapeOutside() const;
    inline void setShapeOutside(Style::ShapeOutside&&);
    static inline Style::ShapeOutside initialShapeOutside();

    // 'shape-rendering'
    inline ShapeRendering shapeRendering() const;
    inline void setShapeRendering(ShapeRendering);
    static constexpr ShapeRendering initialShapeRendering();

    // 'speak-as'
    inline Style::SpeakAs speakAs() const;
    inline void setSpeakAs(Style::SpeakAs);
    static constexpr Style::SpeakAs initialSpeakAs();

    // 'stop-color'
    inline const Style::Color& stopColor() const;
    inline void setStopColor(Style::Color&&);
    static inline Style::Color initialStopColor();
    inline decltype(auto) stopColorResolver() const;
    WebCore::Color stopColorResolvingCurrentColor() const;
    WebCore::Color stopColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentStopColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentStopColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'stop-opacity'
    inline Style::Opacity stopOpacity() const;
    inline void setStopOpacity(Style::Opacity);
    static constexpr Style::Opacity initialStopOpacity();

    // 'stroke'
    inline const Style::SVGPaint& stroke() const;
    inline void setStroke(Style::SVGPaint&&);
    static inline Style::SVGPaint initialStroke();
    inline const Style::SVGPaint& visitedLinkStroke() const;
    inline void setVisitedLinkStroke(Style::SVGPaint&&);
    inline decltype(auto) strokeResolver() const;
    WebCore::Color strokeResolvingCurrentColor() const;
    WebCore::Color strokeResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkStrokeResolvingCurrentColor() const;
    WebCore::Color visitedLinkStrokeResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentStroke(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentStrokeApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'stroke-color'
    inline const Style::Color& strokeColor() const;
    inline void setStrokeColor(Style::Color&&);
    static inline Style::Color initialStrokeColor();
    inline const Style::Color& visitedLinkStrokeColor() const;
    inline void setVisitedLinkStrokeColor(Style::Color&&);
    inline decltype(auto) strokeColorResolver() const;
    WebCore::Color strokeColorResolvingCurrentColor() const;
    WebCore::Color strokeColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkStrokeColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkStrokeColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentStrokeColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentStrokeColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;
    inline bool hasExplicitlySetStrokeColor() const;
    inline void setHasExplicitlySetStrokeColor(bool);

    // 'stroke-dasharray'
    inline const Style::SVGStrokeDasharray& strokeDashArray() const;
    inline void setStrokeDashArray(Style::SVGStrokeDasharray&&);
    static inline Style::SVGStrokeDasharray initialStrokeDashArray();

    // 'stroke-dashoffset'
    inline const Style::SVGStrokeDashoffset& strokeDashOffset() const;
    inline void setStrokeDashOffset(Style::SVGStrokeDashoffset&&);
    static inline Style::SVGStrokeDashoffset initialStrokeDashOffset();

    // 'stroke-linecap'
    inline LineCap capStyle() const;
    inline void setCapStyle(LineCap);
    static constexpr LineCap initialCapStyle();

    // 'stroke-linejoin'
    inline LineJoin joinStyle() const;
    inline void setJoinStyle(LineJoin);
    static constexpr LineJoin initialJoinStyle();

    // 'stroke-miterlimit'
    inline Style::StrokeMiterlimit strokeMiterLimit() const;
    inline void setStrokeMiterLimit(Style::StrokeMiterlimit);
    static constexpr Style::StrokeMiterlimit initialStrokeMiterLimit();

    // 'stroke-opacity'
    inline Style::Opacity strokeOpacity() const;
    inline void setStrokeOpacity(Style::Opacity);
    static constexpr Style::Opacity initialStrokeOpacity();

    // 'stroke-width'
    inline const Style::StrokeWidth& strokeWidth() const;
    inline void setStrokeWidth(Style::StrokeWidth&&);
    static inline Style::StrokeWidth initialStrokeWidth();
    inline bool hasExplicitlySetStrokeWidth() const;
    inline void setHasExplicitlySetStrokeWidth(bool);

    // 'tab-size'
    inline const Style::TabSize& tabSize() const;
    inline void setTabSize(Style::TabSize&&);
    static constexpr Style::TabSize initialTabSize();

    // 'table-layout'
    inline TableLayoutType tableLayout() const;
    inline void setTableLayout(TableLayoutType);
    static constexpr TableLayoutType initialTableLayout();

    // 'text-align'
    inline Style::TextAlign textAlign() const;
    inline void setTextAlign(Style::TextAlign);
    static constexpr Style::TextAlign initialTextAlign();

    // 'text-align-last'
    inline Style::TextAlignLast textAlignLast() const;
    inline void setTextAlignLast(Style::TextAlignLast);
    static constexpr Style::TextAlignLast initialTextAlignLast();

    // 'text-anchor'
    inline TextAnchor textAnchor() const;
    inline void setTextAnchor(TextAnchor);
    static constexpr TextAnchor initialTextAnchor();

    // 'text-box-edge'
    inline Style::TextBoxEdge textBoxEdge() const;
    inline void setTextBoxEdge(Style::TextBoxEdge);
    static constexpr Style::TextBoxEdge initialTextBoxEdge();

    // 'text-box-trim'
    inline TextBoxTrim textBoxTrim() const;
    inline void setTextBoxTrim(TextBoxTrim);
    static constexpr TextBoxTrim initialTextBoxTrim();

    // 'text-combine-upright'
    inline TextCombine textCombine() const;
    inline void setTextCombine(TextCombine);
    static constexpr TextCombine initialTextCombine();

    // 'text-decoration-color'
    inline const Style::Color& textDecorationColor() const;
    inline void setTextDecorationColor(Style::Color&&);
    static inline Style::Color initialTextDecorationColor();
    inline const Style::Color& visitedLinkTextDecorationColor() const;
    inline void setVisitedLinkTextDecorationColor(Style::Color&&);
    inline decltype(auto) textDecorationColorResolver() const;
    WebCore::Color textDecorationColorResolvingCurrentColor() const;
    WebCore::Color textDecorationColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkTextDecorationColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkTextDecorationColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentTextDecorationColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentTextDecorationColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'text-decoration-line'
    inline Style::TextDecorationLine textDecorationLine() const;
    inline void setTextDecorationLine(Style::TextDecorationLine);
    static constexpr Style::TextDecorationLine initialTextDecorationLine();

    // 'text-decoration-skip-ink'
    inline TextDecorationSkipInk textDecorationSkipInk() const;
    inline void setTextDecorationSkipInk(TextDecorationSkipInk);
    static constexpr TextDecorationSkipInk initialTextDecorationSkipInk();

    // 'text-decoration-style'
    inline TextDecorationStyle textDecorationStyle() const;
    inline void setTextDecorationStyle(TextDecorationStyle);
    static constexpr TextDecorationStyle initialTextDecorationStyle();

    // 'text-decoration-thickness'
    inline const Style::TextDecorationThickness& textDecorationThickness() const;
    inline void setTextDecorationThickness(Style::TextDecorationThickness&&);
    static inline Style::TextDecorationThickness initialTextDecorationThickness();

    // 'text-emphasis-color'
    inline const Style::Color& textEmphasisColor() const;
    inline void setTextEmphasisColor(Style::Color&&);
    static inline Style::Color initialTextEmphasisColor();
    inline const Style::Color& visitedLinkTextEmphasisColor() const;
    inline void setVisitedLinkTextEmphasisColor(Style::Color&&);
    inline decltype(auto) textEmphasisColorResolver() const;
    WebCore::Color textEmphasisColorResolvingCurrentColor() const;
    WebCore::Color textEmphasisColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkTextEmphasisColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkTextEmphasisColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentTextEmphasisColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentTextEmphasisColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'text-emphasis-position'
    inline Style::TextEmphasisPosition textEmphasisPosition() const;
    inline void setTextEmphasisPosition(Style::TextEmphasisPosition);
    static constexpr Style::TextEmphasisPosition initialTextEmphasisPosition();

    // 'text-emphasis-style'
    inline const Style::TextEmphasisStyle& textEmphasisStyle() const;
    inline void setTextEmphasisStyle(Style::TextEmphasisStyle&&);
    static inline Style::TextEmphasisStyle initialTextEmphasisStyle();

    // 'text-group-align'
    inline TextGroupAlign textGroupAlign() const;
    inline void setTextGroupAlign(TextGroupAlign);
    static constexpr TextGroupAlign initialTextGroupAlign();

    // 'text-indent'
    inline const Style::TextIndent& textIndent() const;
    inline void setTextIndent(Style::TextIndent&&);
    static inline Style::TextIndent initialTextIndent();

    // 'text-justify'
    inline TextJustify textJustify() const;
    inline void setTextJustify(TextJustify);
    static constexpr TextJustify initialTextJustify();

    // 'text-overflow'
    inline TextOverflow textOverflow() const;
    inline void setTextOverflow(TextOverflow);
    static constexpr TextOverflow initialTextOverflow();

    // 'text-shadow'
    inline const Style::TextShadows& textShadow() const;
    inline void setTextShadow(Style::TextShadows&&);
    static inline Style::TextShadows initialTextShadow();

    // 'text-transform'
    inline Style::TextTransform textTransform() const;
    inline void setTextTransform(Style::TextTransform);
    static constexpr Style::TextTransform initialTextTransform();

    // 'text-underline-offset'
    inline const Style::TextUnderlineOffset& textUnderlineOffset() const;
    inline void setTextUnderlineOffset(Style::TextUnderlineOffset&&);
    static inline Style::TextUnderlineOffset initialTextUnderlineOffset();

    // 'text-underline-position'
    inline Style::TextUnderlinePosition textUnderlinePosition() const;
    inline void setTextUnderlinePosition(Style::TextUnderlinePosition);
    static constexpr Style::TextUnderlinePosition initialTextUnderlinePosition();

    // 'text-wrap-mode'
    inline TextWrapMode textWrapMode() const;
    inline void setTextWrapMode(TextWrapMode);
    static constexpr TextWrapMode initialTextWrapMode();

    // 'text-wrap-style'
    inline TextWrapStyle textWrapStyle() const;
    inline void setTextWrapStyle(TextWrapStyle);
    static constexpr TextWrapStyle initialTextWrapStyle();

    // 'timeline-scope'
    inline const Style::NameScope& timelineScope() const;
    inline void setTimelineScope(Style::NameScope&&);
    static inline Style::NameScope initialTimelineScope();

    // 'touch-action'
    inline Style::TouchAction touchAction() const;
    inline void setTouchAction(Style::TouchAction);
    static constexpr Style::TouchAction initialTouchAction();

    // 'transform'
    inline const Style::Transform& transform() const;
    inline void setTransform(Style::Transform&&);
    static inline Style::Transform initialTransform();

    // 'transform-box'
    inline TransformBox transformBox() const;
    inline void setTransformBox(TransformBox);
    static constexpr TransformBox initialTransformBox();

    // 'transform-origin-x'
    inline const Style::TransformOriginX& transformOriginX() const;
    inline void setTransformOriginX(Style::TransformOriginX&&);
    static inline Style::TransformOriginX initialTransformOriginX();

    // 'transform-origin-y'
    inline const Style::TransformOriginY& transformOriginY() const;
    inline void setTransformOriginY(Style::TransformOriginY&&);
    static inline Style::TransformOriginY initialTransformOriginY();

    // 'transform-origin-z'
    inline const Style::TransformOriginZ& transformOriginZ() const;
    inline void setTransformOriginZ(Style::TransformOriginZ&&);
    static inline Style::TransformOriginZ initialTransformOriginZ();

    // 'transform-style'
    inline TransformStyle3D transformStyle3D() const;
    inline void setTransformStyle3D(TransformStyle3D);
    static constexpr TransformStyle3D initialTransformStyle3D();

    // 'translate'
    inline const Style::Translate& translate() const;
    inline void setTranslate(Style::Translate&&);
    static inline Style::Translate initialTranslate();

    // 'unicode-bidi'
    inline UnicodeBidi unicodeBidi() const;
    inline void setUnicodeBidi(UnicodeBidi);
    static constexpr UnicodeBidi initialUnicodeBidi();

    // 'vector-effect'
    inline VectorEffect vectorEffect() const;
    inline void setVectorEffect(VectorEffect);
    static constexpr VectorEffect initialVectorEffect();

    // 'vertical-align'
    inline const Style::VerticalAlign& verticalAlign() const;
    inline void setVerticalAlign(Style::VerticalAlign&&);
    static inline Style::VerticalAlign initialVerticalAlign();

    // 'view-transition-class'
    inline const Style::ViewTransitionClasses& viewTransitionClasses() const;
    inline void setViewTransitionClasses(Style::ViewTransitionClasses&&);
    static inline Style::ViewTransitionClasses initialViewTransitionClasses();

    // 'view-transition-name'
    inline const Style::ViewTransitionName& viewTransitionName() const;
    inline void setViewTransitionName(Style::ViewTransitionName&&);
    static inline Style::ViewTransitionName initialViewTransitionName();

    // 'visibility'
    inline Visibility visibility() const;
    inline void setVisibility(Visibility);
    static constexpr Visibility initialVisibility();

    // 'white-space-collapse'
    inline WhiteSpaceCollapse whiteSpaceCollapse() const;
    inline void setWhiteSpaceCollapse(WhiteSpaceCollapse);
    static constexpr WhiteSpaceCollapse initialWhiteSpaceCollapse();

    // 'widows'
    inline Style::Widows widows() const;
    inline void setWidows(Style::Widows);
    static constexpr Style::Widows initialWidows();

    // 'will-change'
    inline const Style::WillChange& willChange() const;
    inline void setWillChange(Style::WillChange&&);
    static inline Style::WillChange initialWillChange();

    // 'word-break'
    inline WordBreak wordBreak() const;
    inline void setWordBreak(WordBreak);
    static constexpr WordBreak initialWordBreak();

    // 'x'
    inline const Style::SVGCoordinateComponent& x() const;
    inline void setX(Style::SVGCoordinateComponent&&);
    static inline Style::SVGCoordinateComponent initialX();

    // 'y'
    inline const Style::SVGCoordinateComponent& y() const;
    inline void setY(Style::SVGCoordinateComponent&&);
    static inline Style::SVGCoordinateComponent initialY();

    // 'z-index'
    inline Style::ZIndex specifiedZIndex() const;
    inline void setSpecifiedZIndex(Style::ZIndex);
    static constexpr Style::ZIndex initialSpecifiedZIndex();

    // '-apple-color-filter'
    inline const Style::AppleColorFilter& appleColorFilter() const;
    inline void setAppleColorFilter(Style::AppleColorFilter&&);
    static inline Style::AppleColorFilter initialAppleColorFilter();

    // '-apple-pay-button-style'
    inline ApplePayButtonStyle applePayButtonStyle() const;
    inline void setApplePayButtonStyle(ApplePayButtonStyle);
    static constexpr ApplePayButtonStyle initialApplePayButtonStyle();

    // '-apple-pay-button-type'
    inline ApplePayButtonType applePayButtonType() const;
    inline void setApplePayButtonType(ApplePayButtonType);
    static constexpr ApplePayButtonType initialApplePayButtonType();

    // '-apple-visual-effect'
    inline AppleVisualEffect appleVisualEffect() const;
    inline void setAppleVisualEffect(AppleVisualEffect);
    static constexpr AppleVisualEffect initialAppleVisualEffect();

    // '-webkit-border-horizontal-spacing'
    inline Style::WebkitBorderSpacing borderHorizontalSpacing() const;
    inline void setBorderHorizontalSpacing(Style::WebkitBorderSpacing);
    static constexpr Style::WebkitBorderSpacing initialBorderHorizontalSpacing();

    // '-webkit-border-vertical-spacing'
    inline Style::WebkitBorderSpacing borderVerticalSpacing() const;
    inline void setBorderVerticalSpacing(Style::WebkitBorderSpacing);
    static constexpr Style::WebkitBorderSpacing initialBorderVerticalSpacing();

    // '-webkit-box-align'
    inline BoxAlignment boxAlign() const;
    inline void setBoxAlign(BoxAlignment);
    static constexpr BoxAlignment initialBoxAlign();

    // '-webkit-box-decoration-break'
    inline BoxDecorationBreak boxDecorationBreak() const;
    inline void setBoxDecorationBreak(BoxDecorationBreak);
    static constexpr BoxDecorationBreak initialBoxDecorationBreak();

    // '-webkit-box-direction'
    inline BoxDirection boxDirection() const;
    inline void setBoxDirection(BoxDirection);
    static constexpr BoxDirection initialBoxDirection();

    // '-webkit-box-flex'
    inline Style::WebkitBoxFlex boxFlex() const;
    inline void setBoxFlex(Style::WebkitBoxFlex);
    static constexpr Style::WebkitBoxFlex initialBoxFlex();

    // '-webkit-box-flex-group'
    inline Style::WebkitBoxFlexGroup boxFlexGroup() const;
    inline void setBoxFlexGroup(Style::WebkitBoxFlexGroup);
    static constexpr Style::WebkitBoxFlexGroup initialBoxFlexGroup();

    // '-webkit-box-lines'
    inline BoxLines boxLines() const;
    inline void setBoxLines(BoxLines);
    static constexpr BoxLines initialBoxLines();

    // '-webkit-box-ordinal-group'
    inline Style::WebkitBoxOrdinalGroup boxOrdinalGroup() const;
    inline void setBoxOrdinalGroup(Style::WebkitBoxOrdinalGroup);
    static constexpr Style::WebkitBoxOrdinalGroup initialBoxOrdinalGroup();

    // '-webkit-box-orient'
    inline BoxOrient boxOrient() const;
    inline void setBoxOrient(BoxOrient);
    static constexpr BoxOrient initialBoxOrient();

    // '-webkit-box-pack'
    inline BoxPack boxPack() const;
    inline void setBoxPack(BoxPack);
    static constexpr BoxPack initialBoxPack();

    // '-webkit-box-reflect'
    inline const Style::WebkitBoxReflect& boxReflect() const;
    inline void setBoxReflect(Style::WebkitBoxReflect&&);
    static inline Style::WebkitBoxReflect initialBoxReflect();

    // '-webkit-column-axis'
    inline ColumnAxis columnAxis() const;
    inline void setColumnAxis(ColumnAxis);
    static constexpr ColumnAxis initialColumnAxis();

    // '-webkit-column-progression'
    inline ColumnProgression columnProgression() const;
    inline void setColumnProgression(ColumnProgression);
    static constexpr ColumnProgression initialColumnProgression();

    // '-webkit-cursor-visibility'
    inline CursorVisibility cursorVisibility() const;
    inline void setCursorVisibility(CursorVisibility);
    static constexpr CursorVisibility initialCursorVisibility();

    // '-webkit-hyphenate-limit-after'
    inline Style::HyphenateLimitEdge hyphenateLimitAfter() const;
    inline void setHyphenateLimitAfter(Style::HyphenateLimitEdge);
    static constexpr Style::HyphenateLimitEdge initialHyphenateLimitAfter();

    // '-webkit-hyphenate-limit-before'
    inline Style::HyphenateLimitEdge hyphenateLimitBefore() const;
    inline void setHyphenateLimitBefore(Style::HyphenateLimitEdge);
    static constexpr Style::HyphenateLimitEdge initialHyphenateLimitBefore();

    // '-webkit-hyphenate-limit-lines'
    inline Style::HyphenateLimitLines hyphenateLimitLines() const;
    inline void setHyphenateLimitLines(Style::HyphenateLimitLines);
    static constexpr Style::HyphenateLimitLines initialHyphenateLimitLines();

    // '-webkit-initial-letter'
    inline const Style::WebkitInitialLetter& initialLetter() const;
    inline void setInitialLetter(Style::WebkitInitialLetter&&);
    static constexpr Style::WebkitInitialLetter initialInitialLetter();

    // '-webkit-line-align'
    inline LineAlign lineAlign() const;
    inline void setLineAlign(LineAlign);
    static constexpr LineAlign initialLineAlign();

    // '-webkit-line-box-contain'
    inline Style::WebkitLineBoxContain lineBoxContain() const;
    inline void setLineBoxContain(Style::WebkitLineBoxContain);
    static constexpr Style::WebkitLineBoxContain initialLineBoxContain();

    // '-webkit-line-clamp'
    inline const Style::WebkitLineClamp& lineClamp() const;
    inline void setLineClamp(Style::WebkitLineClamp&&);
    static constexpr Style::WebkitLineClamp initialLineClamp();

    // '-webkit-line-grid'
    inline const Style::WebkitLineGrid& lineGrid() const;
    inline void setLineGrid(Style::WebkitLineGrid&&);
    static inline Style::WebkitLineGrid initialLineGrid();

    // '-webkit-line-snap'
    inline LineSnap lineSnap() const;
    inline void setLineSnap(LineSnap);
    static constexpr LineSnap initialLineSnap();

    // '-webkit-marquee-direction'
    inline MarqueeDirection marqueeDirection() const;
    inline void setMarqueeDirection(MarqueeDirection);
    static constexpr MarqueeDirection initialMarqueeDirection();

    // '-webkit-marquee-increment'
    inline const Style::WebkitMarqueeIncrement& marqueeIncrement() const;
    inline void setMarqueeIncrement(Style::WebkitMarqueeIncrement&&);
    static inline Style::WebkitMarqueeIncrement initialMarqueeIncrement();

    // '-webkit-marquee-repetition'
    inline Style::WebkitMarqueeRepetition marqueeRepetition() const;
    inline void setMarqueeRepetition(Style::WebkitMarqueeRepetition);
    static constexpr Style::WebkitMarqueeRepetition initialMarqueeRepetition();

    // '-webkit-marquee-speed'
    inline Style::WebkitMarqueeSpeed marqueeSpeed() const;
    inline void setMarqueeSpeed(Style::WebkitMarqueeSpeed);
    static constexpr Style::WebkitMarqueeSpeed initialMarqueeSpeed();

    // '-webkit-marquee-style'
    inline MarqueeBehavior marqueeBehavior() const;
    inline void setMarqueeBehavior(MarqueeBehavior);
    static constexpr MarqueeBehavior initialMarqueeBehavior();

    // '-webkit-nbsp-mode'
    inline NBSPMode nbspMode() const;
    inline void setNBSPMode(NBSPMode);
    static constexpr NBSPMode initialNBSPMode();

    // '-webkit-rtl-ordering'
    inline WebCore::Order rtlOrdering() const;
    inline void setRTLOrdering(WebCore::Order);
    static constexpr WebCore::Order initialRTLOrdering();

    // '-webkit-tap-highlight-color'
    inline const Style::Color& tapHighlightColor() const;
    inline void setTapHighlightColor(Style::Color&&);
    static Style::Color initialTapHighlightColor();
    inline decltype(auto) tapHighlightColorResolver() const;
    WEBCORE_EXPORT WebCore::Color tapHighlightColorResolvingCurrentColor() const;
    WebCore::Color tapHighlightColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentTapHighlightColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentTapHighlightColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // '-webkit-text-decorations-in-effect'
    inline Style::TextDecorationLine textDecorationLineInEffect() const;
    inline void setTextDecorationLineInEffect(Style::TextDecorationLine);
    static constexpr Style::TextDecorationLine initialTextDecorationLineInEffect();

    // '-webkit-text-fill-color'
    inline const Style::Color& textFillColor() const;
    inline void setTextFillColor(Style::Color&&);
    static inline Style::Color initialTextFillColor();
    inline const Style::Color& visitedLinkTextFillColor() const;
    inline void setVisitedLinkTextFillColor(Style::Color&&);
    inline decltype(auto) textFillColorResolver() const;
    WebCore::Color textFillColorResolvingCurrentColor() const;
    WebCore::Color textFillColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkTextFillColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkTextFillColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentTextFillColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentTextFillColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // '-webkit-text-security'
    inline TextSecurity textSecurity() const;
    inline void setTextSecurity(TextSecurity);
    static constexpr TextSecurity initialTextSecurity();

    // '-webkit-text-stroke-color'
    inline const Style::Color& textStrokeColor() const;
    inline void setTextStrokeColor(Style::Color&&);
    static inline Style::Color initialTextStrokeColor();
    inline const Style::Color& visitedLinkTextStrokeColor() const;
    inline void setVisitedLinkTextStrokeColor(Style::Color&&);
    inline decltype(auto) textStrokeColorResolver() const;
    WebCore::Color textStrokeColorResolvingCurrentColor() const;
    WebCore::Color textStrokeColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkTextStrokeColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkTextStrokeColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentTextStrokeColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentTextStrokeColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // '-webkit-text-stroke-width'
    inline Style::WebkitTextStrokeWidth textStrokeWidth() const;
    inline void setTextStrokeWidth(Style::WebkitTextStrokeWidth);
    static constexpr Style::WebkitTextStrokeWidth initialTextStrokeWidth();

    // '-webkit-user-drag'
    inline UserDrag userDrag() const;
    inline void setUserDrag(UserDrag);
    static constexpr UserDrag initialUserDrag();

    // '-webkit-user-modify'
    inline UserModify userModify() const;
    inline void setUserModify(UserModify);
    static constexpr UserModify initialUserModify();

    // '-webkit-user-select'
    inline UserSelect userSelect() const;
    inline void setUserSelect(UserSelect);
    static constexpr UserSelect initialUserSelect();

    // 'border-bottom-color'
    inline const Style::Color& borderBottomColor() const;
    inline void setBorderBottomColor(Style::Color&&);
    static inline Style::Color initialBorderBottomColor();
    inline const Style::Color& visitedLinkBorderBottomColor() const;
    inline void setVisitedLinkBorderBottomColor(Style::Color&&);
    inline decltype(auto) borderBottomColorResolver() const;
    WebCore::Color borderBottomColorResolvingCurrentColor() const;
    WebCore::Color borderBottomColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkBorderBottomColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkBorderBottomColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentBorderBottomColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentBorderBottomColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'border-bottom-left-radius'
    inline const Style::BorderRadiusValue& borderBottomLeftRadius() const;
    inline void setBorderBottomLeftRadius(Style::BorderRadiusValue&&);
    static inline Style::BorderRadiusValue initialBorderBottomLeftRadius();
    inline bool hasExplicitlySetBorderBottomLeftRadius() const;
    inline void setHasExplicitlySetBorderBottomLeftRadius(bool);

    // 'border-bottom-right-radius'
    inline const Style::BorderRadiusValue& borderBottomRightRadius() const;
    inline void setBorderBottomRightRadius(Style::BorderRadiusValue&&);
    static inline Style::BorderRadiusValue initialBorderBottomRightRadius();
    inline bool hasExplicitlySetBorderBottomRightRadius() const;
    inline void setHasExplicitlySetBorderBottomRightRadius(bool);

    // 'border-bottom-style'
    inline BorderStyle borderBottomStyle() const;
    inline void setBorderBottomStyle(BorderStyle);
    static constexpr BorderStyle initialBorderBottomStyle();

    // 'border-bottom-width'
    inline const Style::LineWidth& borderBottomWidth() const;
    inline void setBorderBottomWidth(Style::LineWidth&&);
    static constexpr Style::LineWidth initialBorderBottomWidth();

    // 'border-left-color'
    inline const Style::Color& borderLeftColor() const;
    inline void setBorderLeftColor(Style::Color&&);
    static inline Style::Color initialBorderLeftColor();
    inline const Style::Color& visitedLinkBorderLeftColor() const;
    inline void setVisitedLinkBorderLeftColor(Style::Color&&);
    inline decltype(auto) borderLeftColorResolver() const;
    WebCore::Color borderLeftColorResolvingCurrentColor() const;
    WebCore::Color borderLeftColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkBorderLeftColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkBorderLeftColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentBorderLeftColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentBorderLeftColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'border-left-style'
    inline BorderStyle borderLeftStyle() const;
    inline void setBorderLeftStyle(BorderStyle);
    static constexpr BorderStyle initialBorderLeftStyle();

    // 'border-left-width'
    inline const Style::LineWidth& borderLeftWidth() const;
    inline void setBorderLeftWidth(Style::LineWidth&&);
    static constexpr Style::LineWidth initialBorderLeftWidth();

    // 'border-right-color'
    inline const Style::Color& borderRightColor() const;
    inline void setBorderRightColor(Style::Color&&);
    static inline Style::Color initialBorderRightColor();
    inline const Style::Color& visitedLinkBorderRightColor() const;
    inline void setVisitedLinkBorderRightColor(Style::Color&&);
    inline decltype(auto) borderRightColorResolver() const;
    WebCore::Color borderRightColorResolvingCurrentColor() const;
    WebCore::Color borderRightColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkBorderRightColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkBorderRightColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentBorderRightColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentBorderRightColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'border-right-style'
    inline BorderStyle borderRightStyle() const;
    inline void setBorderRightStyle(BorderStyle);
    static constexpr BorderStyle initialBorderRightStyle();

    // 'border-right-width'
    inline const Style::LineWidth& borderRightWidth() const;
    inline void setBorderRightWidth(Style::LineWidth&&);
    static constexpr Style::LineWidth initialBorderRightWidth();

    // 'border-top-color'
    inline const Style::Color& borderTopColor() const;
    inline void setBorderTopColor(Style::Color&&);
    static inline Style::Color initialBorderTopColor();
    inline const Style::Color& visitedLinkBorderTopColor() const;
    inline void setVisitedLinkBorderTopColor(Style::Color&&);
    inline decltype(auto) borderTopColorResolver() const;
    WebCore::Color borderTopColorResolvingCurrentColor() const;
    WebCore::Color borderTopColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedLinkBorderTopColorResolvingCurrentColor() const;
    WebCore::Color visitedLinkBorderTopColorResolvingCurrentColorApplyingColorFilter() const;
    WebCore::Color visitedDependentBorderTopColor(OptionSet<PaintBehavior> = { }) const;
    WebCore::Color visitedDependentBorderTopColorApplyingColorFilter(OptionSet<PaintBehavior> = { }) const;

    // 'border-top-left-radius'
    inline const Style::BorderRadiusValue& borderTopLeftRadius() const;
    inline void setBorderTopLeftRadius(Style::BorderRadiusValue&&);
    static inline Style::BorderRadiusValue initialBorderTopLeftRadius();
    inline bool hasExplicitlySetBorderTopLeftRadius() const;
    inline void setHasExplicitlySetBorderTopLeftRadius(bool);

    // 'border-top-right-radius'
    inline const Style::BorderRadiusValue& borderTopRightRadius() const;
    inline void setBorderTopRightRadius(Style::BorderRadiusValue&&);
    static inline Style::BorderRadiusValue initialBorderTopRightRadius();
    inline bool hasExplicitlySetBorderTopRightRadius() const;
    inline void setHasExplicitlySetBorderTopRightRadius(bool);

    // 'border-top-style'
    inline BorderStyle borderTopStyle() const;
    inline void setBorderTopStyle(BorderStyle);
    static constexpr BorderStyle initialBorderTopStyle();

    // 'border-top-width'
    inline const Style::LineWidth& borderTopWidth() const;
    inline void setBorderTopWidth(Style::LineWidth&&);
    static constexpr Style::LineWidth initialBorderTopWidth();

    // 'bottom'
    inline const Style::InsetEdge& bottom() const;
    inline void setBottom(Style::InsetEdge&&);
    static inline Style::InsetEdge initialBottom();

    // 'contain-intrinsic-height'
    inline const Style::ContainIntrinsicSize& containIntrinsicHeight() const;
    inline void setContainIntrinsicHeight(Style::ContainIntrinsicSize&&);
    static inline Style::ContainIntrinsicSize initialContainIntrinsicHeight();

    // 'contain-intrinsic-width'
    inline const Style::ContainIntrinsicSize& containIntrinsicWidth() const;
    inline void setContainIntrinsicWidth(Style::ContainIntrinsicSize&&);
    static inline Style::ContainIntrinsicSize initialContainIntrinsicWidth();

    // 'corner-bottom-left-shape'
    inline const Style::CornerShapeValue& cornerBottomLeftShape() const;
    inline void setCornerBottomLeftShape(Style::CornerShapeValue&&);
    static constexpr Style::CornerShapeValue initialCornerBottomLeftShape();

    // 'corner-bottom-right-shape'
    inline const Style::CornerShapeValue& cornerBottomRightShape() const;
    inline void setCornerBottomRightShape(Style::CornerShapeValue&&);
    static constexpr Style::CornerShapeValue initialCornerBottomRightShape();

    // 'corner-top-left-shape'
    inline const Style::CornerShapeValue& cornerTopLeftShape() const;
    inline void setCornerTopLeftShape(Style::CornerShapeValue&&);
    static constexpr Style::CornerShapeValue initialCornerTopLeftShape();

    // 'corner-top-right-shape'
    inline const Style::CornerShapeValue& cornerTopRightShape() const;
    inline void setCornerTopRightShape(Style::CornerShapeValue&&);
    static constexpr Style::CornerShapeValue initialCornerTopRightShape();

    // 'height'
    inline const Style::PreferredSize& height() const;
    inline void setHeight(Style::PreferredSize&&);
    static inline Style::PreferredSize initialHeight();

    // 'left'
    inline const Style::InsetEdge& left() const;
    inline void setLeft(Style::InsetEdge&&);
    static inline Style::InsetEdge initialLeft();

    // 'margin-bottom'
    inline const Style::MarginEdge& marginBottom() const;
    inline void setMarginBottom(Style::MarginEdge&&);
    static inline Style::MarginEdge initialMarginBottom();

    // 'margin-left'
    inline const Style::MarginEdge& marginLeft() const;
    inline void setMarginLeft(Style::MarginEdge&&);
    static inline Style::MarginEdge initialMarginLeft();

    // 'margin-right'
    inline const Style::MarginEdge& marginRight() const;
    inline void setMarginRight(Style::MarginEdge&&);
    static inline Style::MarginEdge initialMarginRight();

    // 'margin-top'
    inline const Style::MarginEdge& marginTop() const;
    inline void setMarginTop(Style::MarginEdge&&);
    static inline Style::MarginEdge initialMarginTop();

    // 'max-height'
    inline const Style::MaximumSize& maxHeight() const;
    inline void setMaxHeight(Style::MaximumSize&&);
    static inline Style::MaximumSize initialMaxHeight();

    // 'max-width'
    inline const Style::MaximumSize& maxWidth() const;
    inline void setMaxWidth(Style::MaximumSize&&);
    static inline Style::MaximumSize initialMaxWidth();

    // 'min-height'
    inline const Style::MinimumSize& minHeight() const;
    inline void setMinHeight(Style::MinimumSize&&);
    static inline Style::MinimumSize initialMinHeight();

    // 'min-width'
    inline const Style::MinimumSize& minWidth() const;
    inline void setMinWidth(Style::MinimumSize&&);
    static inline Style::MinimumSize initialMinWidth();

    // 'overflow-x'
    inline Overflow overflowX() const;
    inline void setOverflowX(Overflow);
    static constexpr Overflow initialOverflowX();

    // 'overflow-y'
    inline Overflow overflowY() const;
    inline void setOverflowY(Overflow);
    static constexpr Overflow initialOverflowY();

    // 'overscroll-behavior-x'
    inline OverscrollBehavior overscrollBehaviorX() const;
    inline void setOverscrollBehaviorX(OverscrollBehavior);
    static constexpr OverscrollBehavior initialOverscrollBehaviorX();

    // 'overscroll-behavior-y'
    inline OverscrollBehavior overscrollBehaviorY() const;
    inline void setOverscrollBehaviorY(OverscrollBehavior);
    static constexpr OverscrollBehavior initialOverscrollBehaviorY();

    // 'padding-bottom'
    inline const Style::PaddingEdge& paddingBottom() const;
    inline void setPaddingBottom(Style::PaddingEdge&&);
    static inline Style::PaddingEdge initialPaddingBottom();
    inline bool hasExplicitlySetPaddingBottom() const;
    inline void setHasExplicitlySetPaddingBottom(bool);

    // 'padding-left'
    inline const Style::PaddingEdge& paddingLeft() const;
    inline void setPaddingLeft(Style::PaddingEdge&&);
    static inline Style::PaddingEdge initialPaddingLeft();
    inline bool hasExplicitlySetPaddingLeft() const;
    inline void setHasExplicitlySetPaddingLeft(bool);

    // 'padding-right'
    inline const Style::PaddingEdge& paddingRight() const;
    inline void setPaddingRight(Style::PaddingEdge&&);
    static inline Style::PaddingEdge initialPaddingRight();
    inline bool hasExplicitlySetPaddingRight() const;
    inline void setHasExplicitlySetPaddingRight(bool);

    // 'padding-top'
    inline const Style::PaddingEdge& paddingTop() const;
    inline void setPaddingTop(Style::PaddingEdge&&);
    static inline Style::PaddingEdge initialPaddingTop();
    inline bool hasExplicitlySetPaddingTop() const;
    inline void setHasExplicitlySetPaddingTop(bool);

    // 'right'
    inline const Style::InsetEdge& right() const;
    inline void setRight(Style::InsetEdge&&);
    static inline Style::InsetEdge initialRight();

    // 'scroll-margin-bottom'
    inline const Style::ScrollMarginEdge& scrollMarginBottom() const;
    inline void setScrollMarginBottom(Style::ScrollMarginEdge&&);
    static inline Style::ScrollMarginEdge initialScrollMarginBottom();

    // 'scroll-margin-left'
    inline const Style::ScrollMarginEdge& scrollMarginLeft() const;
    inline void setScrollMarginLeft(Style::ScrollMarginEdge&&);
    static inline Style::ScrollMarginEdge initialScrollMarginLeft();

    // 'scroll-margin-right'
    inline const Style::ScrollMarginEdge& scrollMarginRight() const;
    inline void setScrollMarginRight(Style::ScrollMarginEdge&&);
    static inline Style::ScrollMarginEdge initialScrollMarginRight();

    // 'scroll-margin-top'
    inline const Style::ScrollMarginEdge& scrollMarginTop() const;
    inline void setScrollMarginTop(Style::ScrollMarginEdge&&);
    static inline Style::ScrollMarginEdge initialScrollMarginTop();

    // 'scroll-padding-bottom'
    inline const Style::ScrollPaddingEdge& scrollPaddingBottom() const;
    inline void setScrollPaddingBottom(Style::ScrollPaddingEdge&&);
    static inline Style::ScrollPaddingEdge initialScrollPaddingBottom();

    // 'scroll-padding-left'
    inline const Style::ScrollPaddingEdge& scrollPaddingLeft() const;
    inline void setScrollPaddingLeft(Style::ScrollPaddingEdge&&);
    static inline Style::ScrollPaddingEdge initialScrollPaddingLeft();

    // 'scroll-padding-right'
    inline const Style::ScrollPaddingEdge& scrollPaddingRight() const;
    inline void setScrollPaddingRight(Style::ScrollPaddingEdge&&);
    static inline Style::ScrollPaddingEdge initialScrollPaddingRight();

    // 'scroll-padding-top'
    inline const Style::ScrollPaddingEdge& scrollPaddingTop() const;
    inline void setScrollPaddingTop(Style::ScrollPaddingEdge&&);
    static inline Style::ScrollPaddingEdge initialScrollPaddingTop();

    // 'top'
    inline const Style::InsetEdge& top() const;
    inline void setTop(Style::InsetEdge&&);
    static inline Style::InsetEdge initialTop();

    // 'width'
    inline const Style::PreferredSize& width() const;
    inline void setWidth(Style::PreferredSize&&);
    static inline Style::PreferredSize initialWidth();

    // Logical getters and setters for 'size' properties of type 'axis'.
    inline const Style::PreferredSize& logicalWidth(WritingMode) const;
    inline const Style::PreferredSize& logicalHeight(WritingMode) const;
    inline const Style::PreferredSize& logicalWidth() const;
    inline const Style::PreferredSize& logicalHeight() const;
    inline void setLogicalWidth(Style::PreferredSize&&);
    inline void setLogicalHeight(Style::PreferredSize&&);

    // Logical getters and setters for 'border-color' properties of type 'side'.
    inline const Style::Color& borderColorStart(WritingMode) const;
    inline const Style::Color& borderColorEnd(WritingMode) const;
    inline const Style::Color& borderColorBefore(WritingMode) const;
    inline const Style::Color& borderColorAfter(WritingMode) const;
    inline const Style::Color& borderColorLogicalLeft(WritingMode) const;
    inline const Style::Color& borderColorLogicalRight(WritingMode) const;
    inline const Style::Color& borderColorStart() const;
    inline const Style::Color& borderColorEnd() const;
    inline const Style::Color& borderColorBefore() const;
    inline const Style::Color& borderColorAfter() const;
    inline const Style::Color& borderColorLogicalLeft() const;
    inline const Style::Color& borderColorLogicalRight() const;
    inline void setBorderColorStart(Style::Color&&);
    inline void setBorderColorEnd(Style::Color&&);
    inline void setBorderColorBefore(Style::Color&&);
    inline void setBorderColorAfter(Style::Color&&);
    inline void setBorderColorLogicalLeft(Style::Color&&);
    inline void setBorderColorLogicalRight(Style::Color&&);

    // Logical getters and setters for 'border-style' properties of type 'side'.
    inline BorderStyle borderStyleStart(WritingMode) const;
    inline BorderStyle borderStyleEnd(WritingMode) const;
    inline BorderStyle borderStyleBefore(WritingMode) const;
    inline BorderStyle borderStyleAfter(WritingMode) const;
    inline BorderStyle borderStyleLogicalLeft(WritingMode) const;
    inline BorderStyle borderStyleLogicalRight(WritingMode) const;
    inline BorderStyle borderStyleStart() const;
    inline BorderStyle borderStyleEnd() const;
    inline BorderStyle borderStyleBefore() const;
    inline BorderStyle borderStyleAfter() const;
    inline BorderStyle borderStyleLogicalLeft() const;
    inline BorderStyle borderStyleLogicalRight() const;
    inline void setBorderStyleStart(BorderStyle);
    inline void setBorderStyleEnd(BorderStyle);
    inline void setBorderStyleBefore(BorderStyle);
    inline void setBorderStyleAfter(BorderStyle);
    inline void setBorderStyleLogicalLeft(BorderStyle);
    inline void setBorderStyleLogicalRight(BorderStyle);

    // Logical getters and setters for 'border-width' properties of type 'side'.
    inline const Style::LineWidth& borderWidthStart(WritingMode) const;
    inline const Style::LineWidth& borderWidthEnd(WritingMode) const;
    inline const Style::LineWidth& borderWidthBefore(WritingMode) const;
    inline const Style::LineWidth& borderWidthAfter(WritingMode) const;
    inline const Style::LineWidth& borderWidthLogicalLeft(WritingMode) const;
    inline const Style::LineWidth& borderWidthLogicalRight(WritingMode) const;
    inline const Style::LineWidth& borderWidthStart() const;
    inline const Style::LineWidth& borderWidthEnd() const;
    inline const Style::LineWidth& borderWidthBefore() const;
    inline const Style::LineWidth& borderWidthAfter() const;
    inline const Style::LineWidth& borderWidthLogicalLeft() const;
    inline const Style::LineWidth& borderWidthLogicalRight() const;
    inline void setBorderWidthStart(Style::LineWidth&&);
    inline void setBorderWidthEnd(Style::LineWidth&&);
    inline void setBorderWidthBefore(Style::LineWidth&&);
    inline void setBorderWidthAfter(Style::LineWidth&&);
    inline void setBorderWidthLogicalLeft(Style::LineWidth&&);
    inline void setBorderWidthLogicalRight(Style::LineWidth&&);

    // Logical getters and setters for 'border-radius' properties of type 'corner'.
    // FIXME: Add support for logical getter/setters of kind 'corner'.

    // Logical getters and setters for 'inset' properties of type 'side'.
    inline const Style::InsetEdge& insetStart(WritingMode) const;
    inline const Style::InsetEdge& insetEnd(WritingMode) const;
    inline const Style::InsetEdge& insetBefore(WritingMode) const;
    inline const Style::InsetEdge& insetAfter(WritingMode) const;
    inline const Style::InsetEdge& insetLogicalLeft(WritingMode) const;
    inline const Style::InsetEdge& insetLogicalRight(WritingMode) const;
    inline const Style::InsetEdge& insetStart() const;
    inline const Style::InsetEdge& insetEnd() const;
    inline const Style::InsetEdge& insetBefore() const;
    inline const Style::InsetEdge& insetAfter() const;
    inline const Style::InsetEdge& insetLogicalLeft() const;
    inline const Style::InsetEdge& insetLogicalRight() const;
    inline void setInsetStart(Style::InsetEdge&&);
    inline void setInsetEnd(Style::InsetEdge&&);
    inline void setInsetBefore(Style::InsetEdge&&);
    inline void setInsetAfter(Style::InsetEdge&&);
    inline void setInsetLogicalLeft(Style::InsetEdge&&);
    inline void setInsetLogicalRight(Style::InsetEdge&&);

    // Logical getters and setters for 'corner-shape' properties of type 'corner'.
    // FIXME: Add support for logical getter/setters of kind 'corner'.

    // Logical getters and setters for 'margin' properties of type 'side'.
    inline const Style::MarginEdge& marginStart(WritingMode) const;
    inline const Style::MarginEdge& marginEnd(WritingMode) const;
    inline const Style::MarginEdge& marginBefore(WritingMode) const;
    inline const Style::MarginEdge& marginAfter(WritingMode) const;
    inline const Style::MarginEdge& marginLogicalLeft(WritingMode) const;
    inline const Style::MarginEdge& marginLogicalRight(WritingMode) const;
    inline const Style::MarginEdge& marginStart() const;
    inline const Style::MarginEdge& marginEnd() const;
    inline const Style::MarginEdge& marginBefore() const;
    inline const Style::MarginEdge& marginAfter() const;
    inline const Style::MarginEdge& marginLogicalLeft() const;
    inline const Style::MarginEdge& marginLogicalRight() const;
    inline void setMarginStart(Style::MarginEdge&&);
    inline void setMarginEnd(Style::MarginEdge&&);
    inline void setMarginBefore(Style::MarginEdge&&);
    inline void setMarginAfter(Style::MarginEdge&&);
    inline void setMarginLogicalLeft(Style::MarginEdge&&);
    inline void setMarginLogicalRight(Style::MarginEdge&&);

    // Logical getters and setters for 'max-size' properties of type 'axis'.
    inline const Style::MaximumSize& logicalMaxWidth(WritingMode) const;
    inline const Style::MaximumSize& logicalMaxHeight(WritingMode) const;
    inline const Style::MaximumSize& logicalMaxWidth() const;
    inline const Style::MaximumSize& logicalMaxHeight() const;
    inline void setLogicalMaxWidth(Style::MaximumSize&&);
    inline void setLogicalMaxHeight(Style::MaximumSize&&);

    // Logical getters and setters for 'min-size' properties of type 'axis'.
    inline const Style::MinimumSize& logicalMinWidth(WritingMode) const;
    inline const Style::MinimumSize& logicalMinHeight(WritingMode) const;
    inline const Style::MinimumSize& logicalMinWidth() const;
    inline const Style::MinimumSize& logicalMinHeight() const;
    inline void setLogicalMinWidth(Style::MinimumSize&&);
    inline void setLogicalMinHeight(Style::MinimumSize&&);

    // Logical getters and setters for 'overflow' properties of type 'axis'.
    inline Overflow logicalOverflowX(WritingMode) const;
    inline Overflow logicalOverflowY(WritingMode) const;
    inline Overflow logicalOverflowX() const;
    inline Overflow logicalOverflowY() const;
    inline void setLogicalOverflowX(Overflow);
    inline void setLogicalOverflowY(Overflow);

    // Logical getters and setters for 'overscroll-behavior' properties of type 'axis'.
    inline OverscrollBehavior logicalOverscrollBehaviorX(WritingMode) const;
    inline OverscrollBehavior logicalOverscrollBehaviorY(WritingMode) const;
    inline OverscrollBehavior logicalOverscrollBehaviorX() const;
    inline OverscrollBehavior logicalOverscrollBehaviorY() const;
    inline void setLogicalOverscrollBehaviorX(OverscrollBehavior);
    inline void setLogicalOverscrollBehaviorY(OverscrollBehavior);

    // Logical getters and setters for 'padding' properties of type 'side'.
    inline const Style::PaddingEdge& paddingStart(WritingMode) const;
    inline const Style::PaddingEdge& paddingEnd(WritingMode) const;
    inline const Style::PaddingEdge& paddingBefore(WritingMode) const;
    inline const Style::PaddingEdge& paddingAfter(WritingMode) const;
    inline const Style::PaddingEdge& paddingLogicalLeft(WritingMode) const;
    inline const Style::PaddingEdge& paddingLogicalRight(WritingMode) const;
    inline const Style::PaddingEdge& paddingStart() const;
    inline const Style::PaddingEdge& paddingEnd() const;
    inline const Style::PaddingEdge& paddingBefore() const;
    inline const Style::PaddingEdge& paddingAfter() const;
    inline const Style::PaddingEdge& paddingLogicalLeft() const;
    inline const Style::PaddingEdge& paddingLogicalRight() const;
    inline void setPaddingStart(Style::PaddingEdge&&);
    inline void setPaddingEnd(Style::PaddingEdge&&);
    inline void setPaddingBefore(Style::PaddingEdge&&);
    inline void setPaddingAfter(Style::PaddingEdge&&);
    inline void setPaddingLogicalLeft(Style::PaddingEdge&&);
    inline void setPaddingLogicalRight(Style::PaddingEdge&&);

    // Logical getters and setters for 'contain-intrinsic-size' properties of type 'axis'.
    inline const Style::ContainIntrinsicSize& logicalContainIntrinsicWidth(WritingMode) const;
    inline const Style::ContainIntrinsicSize& logicalContainIntrinsicHeight(WritingMode) const;
    inline const Style::ContainIntrinsicSize& logicalContainIntrinsicWidth() const;
    inline const Style::ContainIntrinsicSize& logicalContainIntrinsicHeight() const;
    inline void setLogicalContainIntrinsicWidth(Style::ContainIntrinsicSize&&);
    inline void setLogicalContainIntrinsicHeight(Style::ContainIntrinsicSize&&);

    // Logical getters and setters for 'scroll-margin' properties of type 'side'.
    inline const Style::ScrollMarginEdge& scrollMarginStart(WritingMode) const;
    inline const Style::ScrollMarginEdge& scrollMarginEnd(WritingMode) const;
    inline const Style::ScrollMarginEdge& scrollMarginBefore(WritingMode) const;
    inline const Style::ScrollMarginEdge& scrollMarginAfter(WritingMode) const;
    inline const Style::ScrollMarginEdge& scrollMarginLogicalLeft(WritingMode) const;
    inline const Style::ScrollMarginEdge& scrollMarginLogicalRight(WritingMode) const;
    inline const Style::ScrollMarginEdge& scrollMarginStart() const;
    inline const Style::ScrollMarginEdge& scrollMarginEnd() const;
    inline const Style::ScrollMarginEdge& scrollMarginBefore() const;
    inline const Style::ScrollMarginEdge& scrollMarginAfter() const;
    inline const Style::ScrollMarginEdge& scrollMarginLogicalLeft() const;
    inline const Style::ScrollMarginEdge& scrollMarginLogicalRight() const;
    inline void setScrollMarginStart(Style::ScrollMarginEdge&&);
    inline void setScrollMarginEnd(Style::ScrollMarginEdge&&);
    inline void setScrollMarginBefore(Style::ScrollMarginEdge&&);
    inline void setScrollMarginAfter(Style::ScrollMarginEdge&&);
    inline void setScrollMarginLogicalLeft(Style::ScrollMarginEdge&&);
    inline void setScrollMarginLogicalRight(Style::ScrollMarginEdge&&);

    // Logical getters and setters for 'scroll-padding' properties of type 'side'.
    inline const Style::ScrollPaddingEdge& scrollPaddingStart(WritingMode) const;
    inline const Style::ScrollPaddingEdge& scrollPaddingEnd(WritingMode) const;
    inline const Style::ScrollPaddingEdge& scrollPaddingBefore(WritingMode) const;
    inline const Style::ScrollPaddingEdge& scrollPaddingAfter(WritingMode) const;
    inline const Style::ScrollPaddingEdge& scrollPaddingLogicalLeft(WritingMode) const;
    inline const Style::ScrollPaddingEdge& scrollPaddingLogicalRight(WritingMode) const;
    inline const Style::ScrollPaddingEdge& scrollPaddingStart() const;
    inline const Style::ScrollPaddingEdge& scrollPaddingEnd() const;
    inline const Style::ScrollPaddingEdge& scrollPaddingBefore() const;
    inline const Style::ScrollPaddingEdge& scrollPaddingAfter() const;
    inline const Style::ScrollPaddingEdge& scrollPaddingLogicalLeft() const;
    inline const Style::ScrollPaddingEdge& scrollPaddingLogicalRight() const;
    inline void setScrollPaddingStart(Style::ScrollPaddingEdge&&);
    inline void setScrollPaddingEnd(Style::ScrollPaddingEdge&&);
    inline void setScrollPaddingBefore(Style::ScrollPaddingEdge&&);
    inline void setScrollPaddingAfter(Style::ScrollPaddingEdge&&);
    inline void setScrollPaddingLogicalLeft(Style::ScrollPaddingEdge&&);
    inline void setScrollPaddingLogicalRight(Style::ScrollPaddingEdge&&);

protected:
    ComputedStyleProperties(ComputedStyleProperties&&) = default;
    ComputedStyleProperties& operator=(ComputedStyleProperties&&) = default;

    ComputedStyleProperties(CreateDefaultStyleTag tag) : ComputedStyleBase { tag } { }
    ComputedStyleProperties(const ComputedStyleProperties& other, CloneTag tag) : ComputedStyleBase { other, tag } { }

    ComputedStyleProperties(ComputedStyleProperties& a, ComputedStyleProperties&& b) : ComputedStyleBase { a, WTF::move(b) } { }
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyAccentColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyBackgroundColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
    static inline bool excludesVisitedLinkColor(const WebCore::Color&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyCaretColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyColumnRuleColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyFill>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyFloodColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyLightingColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyOutlineColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyStopColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyStroke>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyStrokeColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyTextDecorationColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
    static inline WebCore::Color colorResolvingCurrentColor(const ComputedStyleProperties&);
    static inline WebCore::Color visitedLinkColorResolvingCurrentColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyTextEmphasisColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyWebkitTapHighlightColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyWebkitTextFillColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyWebkitTextStrokeColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyBorderBottomColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyBorderLeftColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyBorderRightColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

template<> struct ColorPropertyTraits<PropertyNameConstant<CSSPropertyBorderTopColor>> {
    static inline const Color& color(const ComputedStyleProperties&);
    static inline const Color& visitedLinkColor(const ComputedStyleProperties&);
};

} // namespace WebCore
} // namespace Style

