**THIS IS ABOUT**
-----------------

Currently I am studying the new CSS API that exists in JavaFX 8, and I am having trouble understanding something.

**THE PROBLEM**
---------------

I'm reading about the CssMetaData class documentation, and at a certain time the following is said:

> 
> The method Node.getCssMetaData() is called to obtain the
>  List. This method is called frequently and it is prudent
>  to return a static list rather than creating the list on each call. By
>  convention, node classes that have CssMetaData will implement a static
>  method getClassCssMetaData() and it is customary to have
>  getCssMetaData() simply return getClassCssMetaData(). The purpose of
>  getClassCssMetaData() is to allow sub-classes to easily include the
>  CssMetaData of some ancestor.
> 
> 
> 

In the Node class, we can find the getCssMetaData method. From what I understand, from version 8 of JavaFX, nodes can now store a list of CssMetaData objects which connect CSS properties with each property (if desired) of a node. For example, the Rectangle class can insert it's own CssMetaData instances within that list, which can also be entered by Shape CssMetaData instances, and Node. Finally, the CSS JavaFX engine will read this list, and transform the values ​​of CSS properties in JavaFX bean property values​​, thus setting the values ​​of the properties of classes (if they have done such a properties configuration).

What the documentation meant by it, and why? In CssMetaData documentation there is an example of how this is done. In a snippet, the following appears:

```
private static final List <CssMetaData <? extends Node, ? > > cssMetaDataList;

static 
{
     List <CssMetaData <? extends Node, ? > > temp =
         new ArrayList <CssMetaData <? extends Node, ? > >(Control.getClassCssMetaData());
     temp.add(GAP_META_DATA);

     cssMetaDataList = Collections.unmodifiableList(temp);
 }

 public static List <CssMetaData <? extends Node, ? > > getClassCssMetaData() 
 {
     return cssMetaDataList;
 }

 @Override public List <CssMetaData <? extends Node, ? > > getCssMetaData() 
 {
     return getClassCssMetaData();
 }

```

As I understand it, this kind of code should be put in the class that have the JavaFX bean property connected to the CSS property. For what reason would I have to create a list of CssMetaData in my class again? The Node class does not already have one? The getCssMetaData method is not abstract, which makes it seem that Node has implemented its own list, which (again) causes the client programmer consider using such a list without the need to do this. The Node class has even getCssMetaData method. :s

Can anyone clarify this for me in a clear and simple way (even if you have to write a bit more)? Or is there any other place outside the JavaFX API 8 and [this link](https://wiki.openjdk.java.net/display/OpenJFX/CSS+API+to+support+custom+UI+Controls) (By the way, I've never seen anything so poorly explained like [here](https://wiki.openjdk.java.net/display/OpenJFX/CSS+API+to+support+custom+UI+Controls). Sorry) so I can learn more about the new JavaFX CSS API 8?

> 
> **OBS**: I'd like to put the links here for each class that I mentioned. However, today (GMT - 3 ---- 15:59 pm) the JavaFX 8 documentation is offline. Sorry.
> 
> 
> 

Thank you for your attention.