StyleablePropertyFactory (JavaFX 28)
Description: declaration: module: javafx.graphics, package: javafx.css, class: StyleablePropertyFactory

# Class StyleablePropertyFactory<S extends Styleable>

java.lang.Object
javafx.css.StyleablePropertyFactory<S>

Type Parameters:
  `S` - The type of Styleable

public class StyleablePropertyFactory<S extends Styleable> extends Object
Methods for creating instances of StyleableProperty with corresponding CssMetaData created behind the scenes. These methods greatly reduce the amount of boiler-plate code needed to implement the StyleableProperty and CssMetaData. These methods take a Function<? extends Styleable, StyleableProperty<?>> which returns a reference to the property itself. See the example below. Note that for efficient use of memory and for better CSS performance, creating the `StyleablePropertyFactory` as a static member, as shown below, is recommended.

    public final class MyButton extends Button {

        private static final StyleablePropertyFactory<MyButton> FACTORY = new StyleablePropertyFactory<>(Button.getClassCssMetaData());

        MyButton(String labelText) {
            super(labelText);
            getStyleClass().add("my-button");
        }

        // Typical JavaFX property implementation
        public ObservableValue<Boolean> selectedProperty() { return (ObservableValue<Boolean>)selected; }
        public final boolean isSelected() { return selected.getValue(); }
        public final void setSelected(boolean isSelected) { selected.setValue(isSelected); }

        // StyleableProperty implementation reduced to one line
        private final StyleableProperty<Boolean> selected =
            FACTORY.createStyleableBooleanProperty(this, "selected", "-my-selected", s -> s.selected);

        @Override
        public List<CssMetaData<? extends Styleable, ?>> getControlCssMetaData() {
            return FACTORY.getCssMetaData();
        }

    }

The example above is the simplest use of `StyleablePropertyFactory`. But, this use does not provide the static CssMetaData that is useful for `getClassCssMetaData()`, which is described in the javadoc for `CssMetaData`. Static CssMetaData can, however, be created via `StyleablePropertyFactory` methods and will be returned by the methods which create StyleableProperty instances, as the example below illustrates. Note that the static method `getClassCssMetaData()` is a convention used throughout the JavaFX code base but the `getClassCssMetaData()` method itself is not used at runtime.

    public final class MyButton extends Button {

        private static final StyleablePropertyFactory<MyButton> FACTORY =
            new StyleablePropertyFactory<>(Button.getClassCssMetaData());

        private static final CssMetaData<MyButton, Boolean> SELECTED =
            FACTORY.createBooleanCssMetaData("-my-selected", s -> s.selected, false, false);

        MyButton(String labelText) {
            super(labelText);
            getStyleClass().add("my-button");
        }

        // Typical JavaFX property implementation
        public ObservableValue<Boolean> selectedProperty() { return (ObservableValue<Boolean>)selected; }
        public final boolean isSelected() { return selected.getValue(); }
        public final void setSelected(boolean isSelected) { selected.setValue(isSelected); }

        // StyleableProperty implementation reduced to one line
        private final StyleableProperty<Boolean> selected =
            new SimpleStyleableBooleanProperty(SELECTED, this, "selected");

        public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData() {
            return FACTORY.getCssMetaData();
        }

        @Override
        public List<CssMetaData<? extends Styleable, ?>> getControlCssMetaData() {
            return FACTORY.getCssMetaData();
        }
    }

The same can be accomplished with an inner-class. The previous example called `new SimpleStyleableBooleanProperty` to create the `selected` property. This example uses the factory to access the `CssMetaData` that was created along with the anonymous inner-class. For all intents and purposes, the two examples are the same.

    public final class MyButton extends Button {

        private static CssMetaData<MyButton, Boolean> SELECTED;

        private static final StyleablePropertyFactory<MyButton> FACTORY =
            new StyleablePropertyFactory<>(Button.getClassCssMetaData()) {
            {
                SELECTED = createBooleanCssMetaData("-my-selected", s -> s.selected, false, false);
            }
        };

        MyButton(String labelText) {
            super(labelText);
            getStyleClass().add("my-button");
        }

        // Typical JavaFX property implementation
        public ObservableValue<Boolean> selectedProperty() { return (ObservableValue<Boolean>)selected; }
        public final boolean isSelected() { return selected.getValue(); }
        public final void setSelected(boolean isSelected) { selected.setValue(isSelected); }

        // StyleableProperty implementation reduced to one line
        private final StyleableProperty<Boolean> selected =
            new SimpleStyleableBooleanProperty(SELECTED, "selected", "my-selected");

        public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData() {
            return FACTORY.getCssMetaData();
        }

        @Override
        public List<CssMetaData<? extends Styleable, ?>> getControlCssMetaData() {
            return FACTORY.getCssMetaData();
        }
    }

Caveats:

The only option for creating a StyleableProperty with a number value is to create a StyleableProperty<Number>. The return value from the `getValue()` method of the StyleableProperty is a Number. Therefore, the `get` method of the JavaFX property needs to call the correct `value` method for the return type. For example,

        public ObservableValue<Double> offsetProperty() { return (ObservableValue<Double>)offset; }
        public Double getOffset() { return offset.getValue().doubleValue(); }
        public void setOffset(Double value) { offset.setValue(value); }
        private final StyleableProperty<Number> offset = FACTORY.createStyleableNumberProperty(this, "offset", "-my-offset", s -> ((MyButton)s).offset);

Since:
  JavaFX 8u40

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StyleablePropertyFactory(List<CssMetaData<? extends Styleable, ?>> parentCssMetaData)`
  The constructor is passed the CssMetaData of the parent class of <S>, typically by calling the static `getClassCssMetaData()` method of the parent.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final CssMetaData<S,Boolean>`
  `createBooleanCssMetaData(String property, Function<S, StyleableProperty<Boolean>> function)`
  Create a CssMetaData<S, Boolean> with initial value and inherit flag both defaulting to false.
  `final CssMetaData<S,Boolean>`
  `createBooleanCssMetaData(String property, Function<S, StyleableProperty<Boolean>> function, boolean initialValue)`
  Create a CssMetaData<S, Boolean> with initial value, and inherit flag defaulting to false.
  `final CssMetaData<S,Boolean>`
  `createBooleanCssMetaData(String property, Function<S, StyleableProperty<Boolean>> function, boolean initialValue, boolean inherits)`
  Create a CssMetaData<S, Boolean> with initial value, and inherit flag.
  `final CssMetaData<S,Color>`
  `createColorCssMetaData(String property, Function<S, StyleableProperty<Color>> function)`
  Create a CssMetaData<S, Color> with initial value of Color.BLACK, and inherit flag defaulting to false.
  `final CssMetaData<S,Color>`
  `createColorCssMetaData(String property, Function<S, StyleableProperty<Color>> function, Color initialValue)`
  Create a CssMetaData<S, Color> with initial value, and inherit flag defaulting to false.
  `final CssMetaData<S,Color>`
  `createColorCssMetaData(String property, Function<S, StyleableProperty<Color>> function, Color initialValue, boolean inherits)`
  Create a CssMetaData<S, Color> with initial value, and inherit flag.
  `final CssMetaData<S,Duration>`
  `createDurationCssMetaData(String property, Function<S, StyleableProperty<Duration>> function)`
  Create a CssMetaData<S, Duration> with initial value of Duration.BLACK, and inherit flag defaulting to false.
  `final CssMetaData<S,Duration>`
  `createDurationCssMetaData(String property, Function<S, StyleableProperty<Duration>> function, Duration initialValue)`
  Create a CssMetaData<S, Duration> with initial value, and inherit flag defaulting to false.
  `final CssMetaData<S,Duration>`
  `createDurationCssMetaData(String property, Function<S, StyleableProperty<Duration>> function, Duration initialValue, boolean inherits)`
  Create a CssMetaData<S, Duration> with initial value, and inherit flag.
  `final <E extends Effect>
  CssMetaData<S,E>`
  `createEffectCssMetaData(String property, Function<S, StyleableProperty<E>> function)`
  Create a CssMetaData<S, Effect> with initial value of null, and inherit flag defaulting to false.
  `final <E extends Effect>
  CssMetaData<S,E>`
  `createEffectCssMetaData(String property, Function<S, StyleableProperty<E>> function, E initialValue)`
  Create a CssMetaData<S, Effect> with initial value, and inherit flag defaulting to false.
  `final <E extends Effect>
  CssMetaData<S,E>`
  `createEffectCssMetaData(String property, Function<S, StyleableProperty<E>> function, E initialValue, boolean inherits)`
  Create a CssMetaData<S, Effect> with initial value, and inherit flag.
  `final <E extends Enum<E>>
  CssMetaData<S,E>`
  `createEnumCssMetaData(Class<? extends Enum> enumClass, String property, Function<S, StyleableProperty<E>> function)`
  Create a CssMetaData<S, Enum> with initial value of null, and inherit flag defaulting to false.
  `final <E extends Enum<E>>
  CssMetaData<S,E>`
  `createEnumCssMetaData(Class<? extends Enum> enumClass, String property, Function<S, StyleableProperty<E>> function, E initialValue)`
  Create a CssMetaData<S, Enum> with initial value, and inherit flag defaulting to false.
  `final <E extends Enum<E>>
  CssMetaData<S,E>`
  `createEnumCssMetaData(Class<? extends Enum> enumClass, String property, Function<S, StyleableProperty<E>> function, E initialValue, boolean inherits)`
  Create a CssMetaData<S, Enum> with initial value, and inherit flag.
  `final CssMetaData<S,Font>`
  `createFontCssMetaData(String property, Function<S, StyleableProperty<Font>> function)`
  Create a CssMetaData<S, Font> with initial value of `Font.getDefault()`, and inherit flag defaulting to true.
  `final CssMetaData<S,Font>`
  `createFontCssMetaData(String property, Function<S, StyleableProperty<Font>> function, Font initialValue)`
  Create a CssMetaData<S, Font> with initial value, and inherit flag defaulting to true.
  `final CssMetaData<S,Font>`
  `createFontCssMetaData(String property, Function<S, StyleableProperty<Font>> function, Font initialValue, boolean inherits)`
  Create a CssMetaData<S, Font> with initial value, and inherit flag.
  `final CssMetaData<S,Insets>`
  `createInsetsCssMetaData(String property, Function<S, StyleableProperty<Insets>> function)`
  Create a CssMetaData<S, Insets> with initial value of `Insets.EMPTY`, and inherit flag defaulting to false.
  `final CssMetaData<S,Insets>`
  `createInsetsCssMetaData(String property, Function<S, StyleableProperty<Insets>> function, Insets initialValue)`
  Create a CssMetaData<S, Insets> with initial value, and inherit flag defaulting to false.
  `final CssMetaData<S,Insets>`
  `createInsetsCssMetaData(String property, Function<S, StyleableProperty<Insets>> function, Insets initialValue, boolean inherits)`
  Create a CssMetaData<S, Insets> with initial value, and inherit flag.
  `final CssMetaData<S,Paint>`
  `createPaintCssMetaData(String property, Function<S, StyleableProperty<Paint>> function)`
  Create a CssMetaData<S, Paint> with initial value of Color.BLACK, and inherit flag defaulting to false.
  `final CssMetaData<S,Paint>`
  `createPaintCssMetaData(String property, Function<S, StyleableProperty<Paint>> function, Paint initialValue)`
  Create a CssMetaData<S, Paint> with initial value, and inherit flag defaulting to false.
  `final CssMetaData<S,Paint>`
  `createPaintCssMetaData(String property, Function<S, StyleableProperty<Paint>> function, Paint initialValue, boolean inherits)`
  Create a CssMetaData<S, Paint> with initial value, and inherit flag.
  `final CssMetaData<S,Number>`
  `createSizeCssMetaData(String property, Function<S, StyleableProperty<Number>> function)`
  Create a CssMetaData<S, Number> with initial value of `0d`, and inherit flag defaulting to false.
  `final CssMetaData<S,Number>`
  `createSizeCssMetaData(String property, Function<S, StyleableProperty<Number>> function, Number initialValue)`
  Create a CssMetaData<S, Number> with initial value, and inherit flag defaulting to false.
  `final CssMetaData<S,Number>`
  `createSizeCssMetaData(String property, Function<S, StyleableProperty<Number>> function, Number initialValue, boolean inherits)`
  Create a CssMetaData<S, Number> with initial value, and inherit flag.
  `final CssMetaData<S,String>`
  `createStringCssMetaData(String property, Function<S, StyleableProperty<String>> function)`
  Create a CssMetaData<S, String> with initial value of null, and inherit flag defaulting to false.
  `final CssMetaData<S,String>`
  `createStringCssMetaData(String property, Function<S, StyleableProperty<String>> function, String initialValue)`
  Create a CssMetaData<S, String> with initial value, and inherit flag defaulting to false.
  `final CssMetaData<S,String>`
  `createStringCssMetaData(String property, Function<S, StyleableProperty<String>> function, String initialValue, boolean inherits)`
  Create a CssMetaData<S, String> with initial value, and inherit flag.
  `final StyleableProperty<Boolean>`
  `createStyleableBooleanProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<Boolean> using previously created CssMetaData for the given `cssProperty`.
  `final StyleableProperty<Boolean>`
  `createStyleableBooleanProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Boolean>> function)`
  Create a StyleableProperty<Boolean>.
  `final StyleableProperty<Boolean>`
  `createStyleableBooleanProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Boolean>> function, boolean initialValue)`
  Create a StyleableProperty<Boolean> with initial value.
  `final StyleableProperty<Boolean>`
  `createStyleableBooleanProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Boolean>> function, boolean initialValue, boolean inherits)`
  Create a StyleableProperty<Boolean> with initial value and inherit flag.
  `final StyleableProperty<Color>`
  `createStyleableColorProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<Color> using previously created CssMetaData for the given `cssProperty`.
  `final StyleableProperty<Color>`
  `createStyleableColorProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Color>> function)`
  Create a StyleableProperty<Color>.
  `final StyleableProperty<Color>`
  `createStyleableColorProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Color>> function, Color initialValue)`
  Create a StyleableProperty<Color> with initial value.
  `final StyleableProperty<Color>`
  `createStyleableColorProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Color>> function, Color initialValue, boolean inherits)`
  Create a StyleableProperty<Color> with initial value and inherit flag.
  `final StyleableProperty<Duration>`
  `createStyleableDurationProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<Duration> using previously created CssMetaData for the given `cssProperty`.
  `final StyleableProperty<Duration>`
  `createStyleableDurationProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Duration>> function)`
  Create a StyleableProperty<Duration>.
  `final StyleableProperty<Duration>`
  `createStyleableDurationProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Duration>> function, Duration initialValue)`
  Create a StyleableProperty<Duration> with initial value.
  `final StyleableProperty<Duration>`
  `createStyleableDurationProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Duration>> function, Duration initialValue, boolean inherits)`
  Create a StyleableProperty<Duration> with initial value and inherit flag.
  `final StyleableProperty<Effect>`
  `createStyleableEffectProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<Effect> using previously created CssMetaData for the given `cssProperty`.
  `final <E extends Enum<E>>
  StyleableProperty<E>`
  `createStyleableEffectProperty(S styleable, String propertyName, String cssProperty, Class<E> enumClass)`
  Create a StyleableProperty<E extends Enum<E>> using previously created CssMetaData for the given `cssProperty`.
  `final <E extends Effect>
  StyleableProperty<E>`
  `createStyleableEffectProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function)`
  Create a StyleableProperty<Effect>.
  `final <E extends Effect>
  StyleableProperty<E>`
  `createStyleableEffectProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, E initialValue)`
  Create a StyleableProperty<Effect> with initial value.
  `final <E extends Effect>
  StyleableProperty<E>`
  `createStyleableEffectProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, E initialValue, boolean inherits)`
  Create a StyleableProperty<Effect> with initial value and inherit flag.
  `final <E extends Enum<E>>
  StyleableProperty<E>`
  `createStyleableEnumProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, Class<E> enumClass)`
  Create a StyleableProperty<E extends Enum<E>>.
  `final <E extends Enum<E>>
  StyleableProperty<E>`
  `createStyleableEnumProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, Class<E> enumClass, E initialValue)`
  Create a StyleableProperty<E extends Enum<E>> with initial value.
  `final <E extends Enum<E>>
  StyleableProperty<E>`
  `createStyleableEnumProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, Class<E> enumClass, E initialValue, boolean inherits)`
  Create a StyleableProperty<E extends Enum<E>> with initial value and inherit flag.
  `final StyleableProperty<Font>`
  `createStyleableFontProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<Font> using previously created CssMetaData for the given `cssProperty`.
  `final StyleableProperty<Font>`
  `createStyleableFontProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Font>> function)`
  Create a StyleableProperty<Font>.
  `final StyleableProperty<Font>`
  `createStyleableFontProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Font>> function, Font initialValue)`
  Create a StyleableProperty<Font> with initial value.
  `final StyleableProperty<Font>`
  `createStyleableFontProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Font>> function, Font initialValue, boolean inherits)`
  Create a StyleableProperty<Font> with initial value and inherit flag.
  `final StyleableProperty<Insets>`
  `createStyleableInsetsProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<Insets> using previously created CssMetaData for the given `cssProperty`.
  `final StyleableProperty<Insets>`
  `createStyleableInsetsProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Insets>> function)`
  Create a StyleableProperty<Inset>.
  `final StyleableProperty<Insets>`
  `createStyleableInsetsProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Insets>> function, Insets initialValue)`
  Create a StyleableProperty<Inset> with initial value.
  `final StyleableProperty<Insets>`
  `createStyleableInsetsProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Insets>> function, Insets initialValue, boolean inherits)`
  Create a StyleableProperty<Inset> with initial value and inherit flag.
  `final StyleableProperty<Number>`
  `createStyleableNumberProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<Number> using previously created CssMetaData for the given `cssProperty`.
  `final StyleableProperty<Number>`
  `createStyleableNumberProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Number>> function)`
  Create a StyleableProperty<Number>.
  `final StyleableProperty<Number>`
  `createStyleableNumberProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Number>> function, Number initialValue)`
  Create a StyleableProperty<Number> with initial value.
  `final StyleableProperty<Number>`
  `createStyleableNumberProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Number>> function, Number initialValue, boolean inherits)`
  Create a StyleableProperty<Number> with initial value and inherit flag.
  `final StyleableProperty<Paint>`
  `createStyleablePaintProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<Paint> using previously created CssMetaData for the given `cssProperty`.
  `final StyleableProperty<Paint>`
  `createStyleablePaintProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Paint>> function)`
  Create a StyleableProperty<Paint>.
  `final StyleableProperty<Paint>`
  `createStyleablePaintProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Paint>> function, Paint initialValue)`
  Create a StyleableProperty<Paint> with initial value.
  `final StyleableProperty<Paint>`
  `createStyleablePaintProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Paint>> function, Paint initialValue, boolean inherits)`
  Create a StyleableProperty<Paint> with initial value and inherit flag.
  `final StyleableProperty<String>`
  `createStyleableStringProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<String> using previously created CssMetaData for the given `cssProperty`.
  `final StyleableProperty<String>`
  `createStyleableStringProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function)`
  Create a StyleableProperty<String>.
  `final StyleableProperty<String>`
  `createStyleableStringProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function, String initialValue)`
  Create a StyleableProperty<String> with initial value.
  `final StyleableProperty<String>`
  `createStyleableStringProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function, String initialValue, boolean inherits)`
  Create a StyleableProperty<String> with initial value and inherit flag.
  `final StyleableProperty<String>`
  `createStyleableUrlProperty(S styleable, String propertyName, String cssProperty)`
  Create a StyleableProperty<String> using previously created CssMetaData for the given `cssProperty`.
  `final StyleableProperty<String>`
  `createStyleableUrlProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function)`
  Create a StyleableProperty<String> with initial value.
  `final StyleableProperty<String>`
  `createStyleableUrlProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function, String initialValue)`
  Create a StyleableProperty<String> with initial value.
  `final StyleableProperty<String>`
  `createStyleableUrlProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function, String initialValue, boolean inherits)`
  Create a StyleableProperty<String> with initial value and inherit flag.
  `final CssMetaData<S,String>`
  `createUrlCssMetaData(String property, Function<S, StyleableProperty<String>> function)`
  Create a CssMetaData<S, String> with initial value of null, and inherit flag defaulting to false.
  `final CssMetaData<S,String>`
  `createUrlCssMetaData(String property, Function<S, StyleableProperty<String>> function, String initialValue)`
  Create a CssMetaData<S, String> with initial value, and inherit flag defaulting to false.
  `final CssMetaData<S,String>`
  `createUrlCssMetaData(String property, Function<S, StyleableProperty<String>> function, String initialValue, boolean inherits)`
  Create a CssMetaData<S, String> with initial value, and inherit flag.
  `final List<CssMetaData<? extends Styleable, ?>>`
  `getCssMetaData()`
  Get the CssMetaData for the given Styleable.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### StyleablePropertyFactory

    public StyleablePropertyFactory(List<CssMetaData<? extends Styleable, ?>> parentCssMetaData)
    The constructor is passed the CssMetaData of the parent class of <S>, typically by calling the static `getClassCssMetaData()` method of the parent.
    Parameters:
      `parentCssMetaData` - The CssMetaData of the parent class of <S>, or null.

- ## Method Details

  - ### getCssMetaData

    public final List<CssMetaData<? extends Styleable, ?>> getCssMetaData()
    Get the CssMetaData for the given Styleable. For a Node other than a Control, this method should be called from the `Styleable.getCssMetaData()` method. For a Control, this method should be called from the `Control.getControlCssMetaData()` method.
    Returns:
      the CssMetaData for the given Styleable

  - ### createStyleableBooleanProperty

    public final StyleableProperty<Boolean> createStyleableBooleanProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Boolean>> function, boolean initialValue, boolean inherits)
    Create a StyleableProperty<Boolean> with initial value and inherit flag.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Boolean>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Boolean> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableBooleanProperty

    public final StyleableProperty<Boolean> createStyleableBooleanProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Boolean>> function, boolean initialValue)
    Create a StyleableProperty<Boolean> with initial value. The inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Boolean>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Boolean> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value

  - ### createStyleableBooleanProperty

    public final StyleableProperty<Boolean> createStyleableBooleanProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Boolean>> function)
    Create a StyleableProperty<Boolean>. The initialValue and inherit flag default to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Boolean>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Boolean> that was created by this method call.
    Returns:
      a StyleableProperty created with default initialValue and inherit flag

  - ### createStyleableBooleanProperty

    public final StyleableProperty<Boolean> createStyleableBooleanProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<Boolean> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Boolean>
      `cssProperty` - The CSS property name
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleableColorProperty

    public final StyleableProperty<Color> createStyleableColorProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Color>> function, Color initialValue, boolean inherits)
    Create a StyleableProperty<Color> with initial value and inherit flag.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Color>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Color> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableColorProperty

    public final StyleableProperty<Color> createStyleableColorProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Color>> function, Color initialValue)
    Create a StyleableProperty<Color> with initial value. The inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Color>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Color> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value

  - ### createStyleableColorProperty

    public final StyleableProperty<Color> createStyleableColorProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Color>> function)
    Create a StyleableProperty<Color>. The initial value defaults to Color.BLACK and the inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Color>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Color> that was created by this method call.
    Returns:
      a StyleableProperty created with default initial value and inherit flag

  - ### createStyleableColorProperty

    public final StyleableProperty<Color> createStyleableColorProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<Color> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Color>
      `cssProperty` - The CSS property name
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleableDurationProperty

    public final StyleableProperty<Duration> createStyleableDurationProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Duration>> function, Duration initialValue, boolean inherits)
    Create a StyleableProperty<Duration> with initial value and inherit flag.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Duration>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Duration> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableDurationProperty

    public final StyleableProperty<Duration> createStyleableDurationProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Duration>> function, Duration initialValue)
    Create a StyleableProperty<Duration> with initial value. The inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Duration>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Duration> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleableDurationProperty

    public final StyleableProperty<Duration> createStyleableDurationProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Duration>> function)
    Create a StyleableProperty<Duration>. The initial value defaults to Duration.BLACK and the inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Duration>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Duration> that was created by this method call.
    Returns:
      a StyleableProperty created with default initial value and false inherit flag

  - ### createStyleableDurationProperty

    public final StyleableProperty<Duration> createStyleableDurationProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<Duration> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Duration>
      `cssProperty` - The CSS property name
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleableEffectProperty

    public final <E extends Effect> StyleableProperty<E> createStyleableEffectProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, E initialValue, boolean inherits)
    Create a StyleableProperty<Effect> with initial value and inherit flag.
    Type Parameters:
      `E` - The type of StyleableProperty
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Effect>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Effect> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableEffectProperty

    public final <E extends Effect> StyleableProperty<E> createStyleableEffectProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, E initialValue)
    Create a StyleableProperty<Effect> with initial value. The inherit flag defaults to false.
    Type Parameters:
      `E` - The StyleableProperty created with initial value and false inherit flag
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Effect>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Effect> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleableEffectProperty

    public final <E extends Effect> StyleableProperty<E> createStyleableEffectProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function)
    Create a StyleableProperty<Effect>. The initial value is null and the inherit flag defaults to false.
    Type Parameters:
      `E` - The StyleableProperty created with null initial value and false inherit flag
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Effect>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Effect> that was created by this method call.
    Returns:
      a StyleableProperty created with null initial value and false inherit flag

  - ### createStyleableEffectProperty

    public final StyleableProperty<Effect> createStyleableEffectProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<Effect> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Effect>
      `cssProperty` - The CSS property name
    Returns:
      StyleableProperty created using previously created CssMetaData for the given `cssProperty`
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleableEnumProperty

    public final <E extends Enum<E>> StyleableProperty<E> createStyleableEnumProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, Class<E> enumClass, E initialValue, boolean inherits)
    Create a StyleableProperty<E extends Enum<E>> with initial value and inherit flag. The `enumClass` parameter is the Class of the Enum that is the value of the property. For example,

            private static final StyleablePropertyFactory<MyControl> FACTORY = new StyleablePropertyFactory<>();
            StyleableProperty<Orientation> orientation =
                FACTORY.createStyleableEnumProperty(
                    this,
                    "orientation",
                    "-my-orientation",
                    s -> ((MyControl)s).orientation,
                    Orientation.class,
                    Orientation.HORIZONTAL,
                    false);

    Type Parameters:
      `E` - The StyleableProperty created with initial value and inherit flag
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<E extends Enum<E>>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<E extends Enum<E>> that was created by this method call.
      `enumClass` - The Enum class that is the type of the StyleableProperty<E extends Enum<E>>.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableEnumProperty

    public final <E extends Enum<E>> StyleableProperty<E> createStyleableEnumProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, Class<E> enumClass, E initialValue)
    Create a StyleableProperty<E extends Enum<E>> with initial value. The inherit flag defaults to false. The `enumClass` parameter is the Class of the Enum that is the value of the property. For example,

            private static final StyleablePropertyFactory<MyControl> FACTORY = new StyleablePropertyFactory<>();
            StyleableProperty<Orientation> orientation =
                FACTORY.createStyleableEnumProperty(
                    this,
                    "orientation",
                    "-my-orientation",
                    s -> ((MyControl)s).orientation,
                    Orientation.class,
                    Orientation.HORIZONTAL);

    Type Parameters:
      `E` - The StyleableProperty created with initial value and false inherit flag
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<E extends Enum<E>>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<E extends Enum<E>> that was created by this method call.
      `enumClass` - The Enum class that is the type of the StyleableProperty<E extends Enum<E>>.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleableEnumProperty

    public final <E extends Enum<E>> StyleableProperty<E> createStyleableEnumProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<E>> function, Class<E> enumClass)
    Create a StyleableProperty<E extends Enum<E>>. The initial value is null and inherit flag defaults to false. The `enumClass` parameter is the Class of the Enum that is the value of the property. For example,

            private static final StyleablePropertyFactory<MyControl> FACTORY = new StyleablePropertyFactory<>();
            StyleableProperty<Orientation> orientation =
                FACTORY.createStyleableEnumProperty(
                    this,
                    "orientation",
                    "-my-orientation",
                    s -> ((MyControl)s).orientation,
                    Orientation.class);

    Type Parameters:
      `E` - The StyleableProperty created with null initial value and false inherit flag
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<E extends Enum<E>>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<E extends Enum<E>> that was created by this method call.
      `enumClass` - The Enum class that is the type of the StyleableProperty<E extends Enum<E>>.
    Returns:
      a StyleableProperty created with null initial value and false inherit flag

  - ### createStyleableEffectProperty

    public final <E extends Enum<E>> StyleableProperty<E> createStyleableEffectProperty(S styleable, String propertyName, String cssProperty, Class<E> enumClass)
    Create a StyleableProperty<E extends Enum<E>> using previously created CssMetaData for the given `cssProperty`.
    Type Parameters:
      `E` - The StyleableProperty created using previously created CssMetaData
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<E extends Enum<E>>
      `cssProperty` - The CSS property name
      `enumClass` - The Enum class that is the type of the StyleableProperty<E extends Enum<E>>.
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleableFontProperty

    public final StyleableProperty<Font> createStyleableFontProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Font>> function, Font initialValue, boolean inherits)
    Create a StyleableProperty<Font> with initial value and inherit flag.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Font>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Font> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableFontProperty

    public final StyleableProperty<Font> createStyleableFontProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Font>> function, Font initialValue)
    Create a StyleableProperty<Font> with initial value. The inherit flag defaults to true.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Font>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Font> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value and true inherit flag

  - ### createStyleableFontProperty

    public final StyleableProperty<Font> createStyleableFontProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Font>> function)
    Create a StyleableProperty<Font>. The initial value defaults to `Font.getDefault()` and the inherit flag defaults to true.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Font>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Font> that was created by this method call.
    Returns:
      a StyleableProperty created with default font initial value and true inherit flag

  - ### createStyleableFontProperty

    public final StyleableProperty<Font> createStyleableFontProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<Font> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Font>
      `cssProperty` - The CSS property name
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleableInsetsProperty

    public final StyleableProperty<Insets> createStyleableInsetsProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Insets>> function, Insets initialValue, boolean inherits)
    Create a StyleableProperty<Inset> with initial value and inherit flag.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Inset>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Inset> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableInsetsProperty

    public final StyleableProperty<Insets> createStyleableInsetsProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Insets>> function, Insets initialValue)
    Create a StyleableProperty<Inset> with initial value. The inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Inset>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Inset> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleableInsetsProperty

    public final StyleableProperty<Insets> createStyleableInsetsProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Insets>> function)
    Create a StyleableProperty<Inset>. The initial value is `Insets.EMPTY` and the inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Inset>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Inset> that was created by this method call.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleableInsetsProperty

    public final StyleableProperty<Insets> createStyleableInsetsProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<Insets> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Insets>
      `cssProperty` - The CSS property name
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleablePaintProperty

    public final StyleableProperty<Paint> createStyleablePaintProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Paint>> function, Paint initialValue, boolean inherits)
    Create a StyleableProperty<Paint> with initial value and inherit flag.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Paint>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Paint> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleablePaintProperty

    public final StyleableProperty<Paint> createStyleablePaintProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Paint>> function, Paint initialValue)
    Create a StyleableProperty<Paint> with initial value. The inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Paint>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Paint> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleablePaintProperty

    public final StyleableProperty<Paint> createStyleablePaintProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Paint>> function)
    Create a StyleableProperty<Paint>. The initial value defautls to Color.BLACK and the inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Paint>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Paint> that was created by this method call.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleablePaintProperty

    public final StyleableProperty<Paint> createStyleablePaintProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<Paint> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Paint>
      `cssProperty` - The CSS property name
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleableNumberProperty

    public final StyleableProperty<Number> createStyleableNumberProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Number>> function, Number initialValue, boolean inherits)
    Create a StyleableProperty<Number> with initial value and inherit flag.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Number>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Number> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableNumberProperty

    public final StyleableProperty<Number> createStyleableNumberProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Number>> function, Number initialValue)
    Create a StyleableProperty<Number> with initial value. The inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Number>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Number> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleableNumberProperty

    public final StyleableProperty<Number> createStyleableNumberProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<Number>> function)
    Create a StyleableProperty<Number>. The initial value defaults to zero. The inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Number>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<Number> that was created by this method call.
    Returns:
      a StyleableProperty created with zero initial value and false inherit flag

  - ### createStyleableNumberProperty

    public final StyleableProperty<Number> createStyleableNumberProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<Number> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<Number>
      `cssProperty` - The CSS property name
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleableStringProperty

    public final StyleableProperty<String> createStyleableStringProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function, String initialValue, boolean inherits)
    Create a StyleableProperty<String> with initial value and inherit flag.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<String>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<String> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableStringProperty

    public final StyleableProperty<String> createStyleableStringProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function, String initialValue)
    Create a StyleableProperty<String> with initial value. The inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<String>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<String> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleableStringProperty

    public final StyleableProperty<String> createStyleableStringProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function)
    Create a StyleableProperty<String>. The initial value defaults to null and the inherit flag defaults to false.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<String>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<String> that was created by this method call.
    Returns:
      a StyleableProperty created with null initial value and false inherit flag

  - ### createStyleableStringProperty

    public final StyleableProperty<String> createStyleableStringProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<String> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<String>
      `cssProperty` - The CSS property name
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createStyleableUrlProperty

    public final StyleableProperty<String> createStyleableUrlProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function, String initialValue, boolean inherits)
    Create a StyleableProperty<String> with initial value and inherit flag. Here, the String value represents a URL converted from a CSS url("<path>").
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<String>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<String> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a StyleableProperty created with initial value and inherit flag

  - ### createStyleableUrlProperty

    public final StyleableProperty<String> createStyleableUrlProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function, String initialValue)
    Create a StyleableProperty<String> with initial value. The inherit flag defaults to false. Here, the String value represents a URL converted from a CSS url("<path>").
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<String>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<String> that was created by this method call.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleableUrlProperty

    public final StyleableProperty<String> createStyleableUrlProperty(S styleable, String propertyName, String cssProperty, Function<S, StyleableProperty<String>> function)
    Create a StyleableProperty<String> with initial value. The inherit flag defaults to false. Here, the String value represents a URL converted from a CSS url("<path>").
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<String>
      `cssProperty` - The CSS property name
      `function` - A function that returns the StyleableProperty<String> that was created by this method call.
    Returns:
      a StyleableProperty created with initial value and false inherit flag

  - ### createStyleableUrlProperty

    public final StyleableProperty<String> createStyleableUrlProperty(S styleable, String propertyName, String cssProperty)
    Create a StyleableProperty<String> using previously created CssMetaData for the given `cssProperty`.
    Parameters:
      `styleable` - The `this` reference of the returned property. This is also the property bean.
      `propertyName` - The field name of the StyleableProperty<String>
      `cssProperty` - The CSS property name
    Returns:
      a StyleableProperty created using previously created CssMetaData
    Throws:
      `IllegalArgumentException` - if `cssProperty` is null or empty
      `NoSuchElementException` - if the CssMetaData for `cssProperty` was not created prior to this method invocation

  - ### createBooleanCssMetaData

    public final CssMetaData<S,Boolean> createBooleanCssMetaData(String property, Function<S, StyleableProperty<Boolean>> function, boolean initialValue, boolean inherits)
    Create a CssMetaData<S, Boolean> with initial value, and inherit flag.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Boolean> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createBooleanCssMetaData

    public final CssMetaData<S,Boolean> createBooleanCssMetaData(String property, Function<S, StyleableProperty<Boolean>> function, boolean initialValue)
    Create a CssMetaData<S, Boolean> with initial value, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Boolean> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createBooleanCssMetaData

    public final CssMetaData<S,Boolean> createBooleanCssMetaData(String property, Function<S, StyleableProperty<Boolean>> function)
    Create a CssMetaData<S, Boolean> with initial value and inherit flag both defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Boolean> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with false initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createColorCssMetaData

    public final CssMetaData<S,Color> createColorCssMetaData(String property, Function<S, StyleableProperty<Color>> function, Color initialValue, boolean inherits)
    Create a CssMetaData<S, Color> with initial value, and inherit flag.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Color> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createColorCssMetaData

    public final CssMetaData<S,Color> createColorCssMetaData(String property, Function<S, StyleableProperty<Color>> function, Color initialValue)
    Create a CssMetaData<S, Color> with initial value, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Color> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createColorCssMetaData

    public final CssMetaData<S,Color> createColorCssMetaData(String property, Function<S, StyleableProperty<Color>> function)
    Create a CssMetaData<S, Color> with initial value of Color.BLACK, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Color> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createDurationCssMetaData

    public final CssMetaData<S,Duration> createDurationCssMetaData(String property, Function<S, StyleableProperty<Duration>> function, Duration initialValue, boolean inherits)
    Create a CssMetaData<S, Duration> with initial value, and inherit flag.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Duration> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createDurationCssMetaData

    public final CssMetaData<S,Duration> createDurationCssMetaData(String property, Function<S, StyleableProperty<Duration>> function, Duration initialValue)
    Create a CssMetaData<S, Duration> with initial value, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Duration> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createDurationCssMetaData

    public final CssMetaData<S,Duration> createDurationCssMetaData(String property, Function<S, StyleableProperty<Duration>> function)
    Create a CssMetaData<S, Duration> with initial value of Duration.BLACK, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Duration> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createEffectCssMetaData

    public final <E extends Effect> CssMetaData<S,E> createEffectCssMetaData(String property, Function<S, StyleableProperty<E>> function, E initialValue, boolean inherits)
    Create a CssMetaData<S, Effect> with initial value, and inherit flag.
    Type Parameters:
      `E` - The CssMetaData created with initial value and inherit flag
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Effect> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createEffectCssMetaData

    public final <E extends Effect> CssMetaData<S,E> createEffectCssMetaData(String property, Function<S, StyleableProperty<E>> function, E initialValue)
    Create a CssMetaData<S, Effect> with initial value, and inherit flag defaulting to false.
    Type Parameters:
      `E` - The CssMetaData created with initial value and false inherit flag
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Effect> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createEffectCssMetaData

    public final <E extends Effect> CssMetaData<S,E> createEffectCssMetaData(String property, Function<S, StyleableProperty<E>> function)
    Create a CssMetaData<S, Effect> with initial value of null, and inherit flag defaulting to false.
    Type Parameters:
      `E` - The CssMetaData created with null initial value and false inherit flag
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Effect> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with null initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createEnumCssMetaData

    public final <E extends Enum<E>> CssMetaData<S,E> createEnumCssMetaData(Class<? extends Enum> enumClass, String property, Function<S, StyleableProperty<E>> function, E initialValue, boolean inherits)
    Create a CssMetaData<S, Enum> with initial value, and inherit flag.
    Type Parameters:
      `E` - The CssMetaData created with initial value and inherit flag
    Parameters:
      `enumClass` - The Enum class that is the type of the CssMetaData<E extends Enum<E>>.
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Enum> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createEnumCssMetaData

    public final <E extends Enum<E>> CssMetaData<S,E> createEnumCssMetaData(Class<? extends Enum> enumClass, String property, Function<S, StyleableProperty<E>> function, E initialValue)
    Create a CssMetaData<S, Enum> with initial value, and inherit flag defaulting to false.
    Type Parameters:
      `E` - The CssMetaData created with initial value and false inherit flag
    Parameters:
      `enumClass` - The Enum class that is the type of the CssMetaData<E extends Enum<E>>.
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Enum> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createEnumCssMetaData

    public final <E extends Enum<E>> CssMetaData<S,E> createEnumCssMetaData(Class<? extends Enum> enumClass, String property, Function<S, StyleableProperty<E>> function)
    Create a CssMetaData<S, Enum> with initial value of null, and inherit flag defaulting to false.
    Type Parameters:
      `E` - The CssMetaData created with null initial value and false inherit flag
    Parameters:
      `enumClass` - The Enum class that is the type of the CssMetaData<E extends Enum<E>>.
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Enum> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with null initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createFontCssMetaData

    public final CssMetaData<S,Font> createFontCssMetaData(String property, Function<S, StyleableProperty<Font>> function, Font initialValue, boolean inherits)
    Create a CssMetaData<S, Font> with initial value, and inherit flag.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Font> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createFontCssMetaData

    public final CssMetaData<S,Font> createFontCssMetaData(String property, Function<S, StyleableProperty<Font>> function, Font initialValue)
    Create a CssMetaData<S, Font> with initial value, and inherit flag defaulting to true.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Font> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and true inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createFontCssMetaData

    public final CssMetaData<S,Font> createFontCssMetaData(String property, Function<S, StyleableProperty<Font>> function)
    Create a CssMetaData<S, Font> with initial value of `Font.getDefault()`, and inherit flag defaulting to true.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Font> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with initial value, and true inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createInsetsCssMetaData

    public final CssMetaData<S,Insets> createInsetsCssMetaData(String property, Function<S, StyleableProperty<Insets>> function, Insets initialValue, boolean inherits)
    Create a CssMetaData<S, Insets> with initial value, and inherit flag.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Insets> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createInsetsCssMetaData

    public final CssMetaData<S,Insets> createInsetsCssMetaData(String property, Function<S, StyleableProperty<Insets>> function, Insets initialValue)
    Create a CssMetaData<S, Insets> with initial value, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Insets> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createInsetsCssMetaData

    public final CssMetaData<S,Insets> createInsetsCssMetaData(String property, Function<S, StyleableProperty<Insets>> function)
    Create a CssMetaData<S, Insets> with initial value of `Insets.EMPTY`, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Insets> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createPaintCssMetaData

    public final CssMetaData<S,Paint> createPaintCssMetaData(String property, Function<S, StyleableProperty<Paint>> function, Paint initialValue, boolean inherits)
    Create a CssMetaData<S, Paint> with initial value, and inherit flag.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Paint> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createPaintCssMetaData

    public final CssMetaData<S,Paint> createPaintCssMetaData(String property, Function<S, StyleableProperty<Paint>> function, Paint initialValue)
    Create a CssMetaData<S, Paint> with initial value, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Paint> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createPaintCssMetaData

    public final CssMetaData<S,Paint> createPaintCssMetaData(String property, Function<S, StyleableProperty<Paint>> function)
    Create a CssMetaData<S, Paint> with initial value of Color.BLACK, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Paint> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createSizeCssMetaData

    public final CssMetaData<S,Number> createSizeCssMetaData(String property, Function<S, StyleableProperty<Number>> function, Number initialValue, boolean inherits)
    Create a CssMetaData<S, Number> with initial value, and inherit flag.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Number> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createSizeCssMetaData

    public final CssMetaData<S,Number> createSizeCssMetaData(String property, Function<S, StyleableProperty<Number>> function, Number initialValue)
    Create a CssMetaData<S, Number> with initial value, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Number> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createSizeCssMetaData

    public final CssMetaData<S,Number> createSizeCssMetaData(String property, Function<S, StyleableProperty<Number>> function)
    Create a CssMetaData<S, Number> with initial value of `0d`, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<Number> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createStringCssMetaData

    public final CssMetaData<S,String> createStringCssMetaData(String property, Function<S, StyleableProperty<String>> function, String initialValue, boolean inherits)
    Create a CssMetaData<S, String> with initial value, and inherit flag.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<String> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createStringCssMetaData

    public final CssMetaData<S,String> createStringCssMetaData(String property, Function<S, StyleableProperty<String>> function, String initialValue)
    Create a CssMetaData<S, String> with initial value, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<String> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createStringCssMetaData

    public final CssMetaData<S,String> createStringCssMetaData(String property, Function<S, StyleableProperty<String>> function)
    Create a CssMetaData<S, String> with initial value of null, and inherit flag defaulting to false.
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<String> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with null initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createUrlCssMetaData

    public final CssMetaData<S,String> createUrlCssMetaData(String property, Function<S, StyleableProperty<String>> function, String initialValue, boolean inherits)
    Create a CssMetaData<S, String> with initial value, and inherit flag. Here, the String value represents a URL converted from a CSS url("<path>").
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<String> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
      `inherits` - Whether or not the CSS style can be inherited by child nodes
    Returns:
      a CssMetaData created with initial value, and inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createUrlCssMetaData

    public final CssMetaData<S,String> createUrlCssMetaData(String property, Function<S, StyleableProperty<String>> function, String initialValue)
    Create a CssMetaData<S, String> with initial value, and inherit flag defaulting to false. Here, the String value represents a URL converted from a CSS url("<path>").
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<String> that corresponds to this CssMetaData.
      `initialValue` - The initial value of the property. CSS may reset the property to this value.
    Returns:
      a CssMetaData created with initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.

  - ### createUrlCssMetaData

    public final CssMetaData<S,String> createUrlCssMetaData(String property, Function<S, StyleableProperty<String>> function)
    Create a CssMetaData<S, String> with initial value of null, and inherit flag defaulting to false. Here, the String value represents a URL converted from a CSS url("<path>").
    Parameters:
      `property` - The CSS property name.
      `function` - A function that returns the StyleableProperty<String> that corresponds to this CssMetaData.
    Returns:
      a CssMetaData created with null initial value, and false inherit flag
    Throws:
      `IllegalArgumentException` - if `property` is null or an empty string, or `function` is null.