anchor.diff:  
   [IMPORTANT]
   ====
  -You want to add custom accessor methods to a spatial? Do not extend `Node` or `Geometry`, use <<jme3/advanced/custom_controls#,Custom Controls>> instead. You want to add custom fields to a spatial? Do not extend `Node` or `Geometry`, use the built-in `setUserData()` method instead. Where ever the Spatial is accessible, you can easily access the object's class fields (user data) and accessors (control methods) this way.
  +You want to add custom accessor methods to a spatial? Do not extend `Node` or `Geometry`, use xref:jme3/advanced/custom_controls.adoc[Custom Controls] instead. You want to add custom fields to a spatial? Do not extend `Node` or `Geometry`, use the built-in `setUserData()` method instead. Where ever the Spatial is accessible, you can easily access the object's class fields (user data) and accessors (control methods) this way.
   ====
   
   
  
positive.code: 2+a|com.jme3.scene.Spatial
  
  a| Purpose:
  2+a| A Spatial is an abstract data structure that stores user data and transformations (= translation, rotation, scale) of elements of the 3D scene graph. Spatials can be saved and loaded using the <<jme3/advanced/asset_manager#,Asset Manager>>.
  
  <a|
  a| com.jme3.scene.Geometry
  
negative.code: ----
  
  *  You can add as many data objects (of String, Boolean, Integer, Float, Array types) to a Spatial as you want. Just make sure to label them with unique case-sensitive strings (`health`, `Inventory`, `equipment`, etc).
  *  The saved data can even be a custom Java object if you make the custom Java class xref:jme3/advanced/save_and_load.adoc#custom-savable-class[implement the Savable interface]!
  *  When you save a Spatial as a .j3o file, the custom data is saved, too, and all Savables are restored the next time you load the .j3o!
  
  This is how you list all data keys that are already defined for one Spatial:
  