{
  // Define ClassName and BaseClass, 
  // .. => Node, Resource and RJ classes will be included automatically

  "class":"ClassName:BaseClass",
  
  // Includes needed for members
  "includes":[ "./RJAction.h" ],


  // Protected member definitions
  "protected":
  {
    // same as public, see below
  },

  // Public member definitions
  "public":
  {   
    // --------------------------------------------------------------------
    // [ V A R I A B L E S ]
    // --------------------------------------------------------------------

    // float
    "number": 0,
    
    // int 
    "counter": "int",
    
    // bool
    "isOn": false,

    // string
    "name": "String",

    // Vector3 
    "position": "Vector3",

    // Quaternion
    "rotation": "Quaternion",



    // --------------------------------------------------------------------
    // [ M E T H O D S ]
    // --------------------------------------------------------------------

    // methods can be overwritten and are virtual by default
    "doStuff()" : {},
    // this is the same as the above
    "virtual doStuff()" : {},

    // method that is not virtual
    "final doStuff()" : {},


    // Static methods are available without instance
    "static doStuff()" : {},


    // Without return or parameters
    "doStuff()" : {},


    // With value return but without parameters
    "doStuff():int" : {},

    // With reference return but without parameters, 
    // "Ref<T>" is important
    "doStuff():Ref<Node>" : {},
    "doStuff():Ref<Resource>" : {},


    // Parameters
    "somethingWithParameters():Ref<Node>" : { "id":"int", "reference":"Ref<Resource>" },


    // --------------------------------------------------------------------
    // [ S I G N A L S ]
    // --------------------------------------------------------------------

    // Signals are return-less callbacks, which can have input parameters
    "signal onEvent()" :  { "callbackID": "int" },


    // --------------------------------------------------------------------
    // [ A C T I O N ] (RJAction)
    // --------------------------------------------------------------------

    // RJActions are signals without input parameters and can be assigned in the editor
    // This function will create a reference for the action and create
    // setters/getters for it and additionally creates a signal. 
    // Should not have a "on" before the name, since this will be added.
    
    // The class will have a signal 'changed' and an RJAction 'onChanged'
    "action changed" :  {},

  }
}