public static void Run()
        {
            //ExStart: ThreeDProperties
            string             dataDir  = RunExamples.GetDataDir();
            Scene              scene    = new Scene(dataDir + "EmbeddedTexture.fbx");
            Material           material = scene.RootNode.ChildNodes[0].Material;
            PropertyCollection props    = material.Properties;

            //List all properties using foreach
            foreach (var prop in props)
            {
                Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
            }
            //or using ordinal for loop
            for (int i = 0; i < props.Count; i++)
            {
                var prop = props[i];
                Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
            }
            //Get property value by name
            var diffuse = props["Diffuse"];

            Console.WriteLine(diffuse);
            //modify property value by name
            props["Diffuse"] = new Vector3(1, 0, 1);
            //Get property instance by name
            Property pdiffuse = props.FindProperty("Diffuse");

            Console.WriteLine(pdiffuse);
            //Since Property is also inherited from A3DObject
            //It's possible to get the property of the property
            Console.WriteLine("Property flags = {0}", pdiffuse.GetProperty("flags"));
            //and some properties that only defined in FBX file:
            Console.WriteLine("Label = {0}", pdiffuse.GetProperty("label"));
            Console.WriteLine("Type Name = {0}", pdiffuse.GetProperty("typeName"));
            //so traversal on property's property is possible
            foreach (var pp in pdiffuse.Properties)
            {
                Console.WriteLine("Diffuse.{0} = {1}", pp.Name, pp.Value);
            }
            //ExEnd: ThreeDProperties
        }