Nested Data Templates 
If a Data Template contains a variable of another Data Template type as a member, nested Data Templates can be achieved.
Basic Usage 
mcfpp
data A {
    valueA as int;
}
data B {
    valueB as int;
    dataA as A;
}
func main(){
    // Create objects
    var b = B();
    var a = A();
    a.valueA = 5;
    b.valueB = 5;
    b.dataA = A();
    // Or directly assign values
    var qwq as B = {
        "valueB": 5,
        "dataA": {
            "valueA": 5
        }
    };
    // Access values
    print(b.valueB);
    print(b.dataA.valueA);
}Apparently, using the same type as a member within a Data Template is not allowed.
Anonymous Definition 
In a Data Template, an anonymous Data Template can be defined as a member type:
mcfpp
data B{
    var valueB as int;
    dataA as data{
        int valueA;
    };
}