void RecursiveCreateProperties(SF.Tong.Schema.NodeTypeInfo nodeDef, Dictionary <string, SF.Tong.Schema.Property> properties)
        {
            if (!string.IsNullOrEmpty(nodeDef.Base))
            {
                SF.Tong.Schema.NodeTypeInfo parentNodeDef = nodeDef.Parent;
                if (parentNodeDef != null)
                {
                    // TODO : maybe parent domnode type would be better?
                    RecursiveCreateProperties(parentNodeDef, properties);
                }
                else
                {
                    Outputs.Write(OutputMessageType.Error, "Can't find base node definition: {0} parent of {1}", nodeDef.Base, nodeDef.Name);
                }
            }

            if (nodeDef.Property != null)
            {
                foreach (var prop in nodeDef.Property)
                {
                    if (properties.ContainsKey(prop.Name))
                    {
                        // This is DFS travel. Child most property definition will be taken.
                        // override
                        properties[prop.Name] = prop;
                    }
                    else
                    {
                        properties.Add(prop.Name, prop);
                    }
                }
            }
        }