public void TestAdd()
        {
            using (var fbxPose = CreateObject("pose")){
                using (var fbxNode = FbxNode.Create(Manager, "node"))
                    using (var fbxMatrix = new FbxMatrix()){
                        Assert.AreEqual(0, fbxPose.GetCount());

                        // test basic use
                        int index = fbxPose.Add(fbxNode, fbxMatrix); // returns -1 if it fails
                        Assert.Greater(index, -1);
                        Assert.AreEqual(fbxPose.GetNode(index), fbxNode);
                        Assert.AreEqual(fbxPose.GetMatrix(index), fbxMatrix);

                        Assert.AreEqual(1, fbxPose.GetCount());

                        // test adding null
                        Assert.That(() => {
                            fbxPose.Add(null, null);
                        }, Throws.Exception.TypeOf <System.ArgumentNullException> ());

                        fbxPose.Add(FbxNode.Create(Manager, "node1"), fbxMatrix);
                        Assert.AreEqual(2, fbxPose.GetCount());
                    }

                var node = FbxNode.Create(Manager, "node1");
                using (var fbxMatrix = new FbxMatrix()) {
                    // test adding invalid node
                    node.Destroy();
                    Assert.That(() => {
                        fbxPose.Add(node, fbxMatrix);
                    }, Throws.Exception.TypeOf <System.ArgumentNullException> ());
                }

                using (var fbxNode = FbxNode.Create(Manager, "node2")){
                    var fbxMatrix = new FbxMatrix();
                    // test adding invalid matrix
                    fbxMatrix.Dispose();
                    Assert.That(() => {
                        fbxPose.Add(fbxNode, fbxMatrix);
                    }, Throws.Exception.TypeOf <System.ArgumentNullException> ());
                }

                using (var fbxNode = FbxNode.Create(Manager, "node3"))
                    using (var fbxMatrix = new FbxMatrix()) {
                        // test with local matrix arg
                        int index = fbxPose.Add(fbxNode, fbxMatrix, true); // false is default
                        Assert.Greater(index, -1);
                        Assert.AreEqual(fbxPose.GetNode(index), fbxNode);
                        Assert.AreEqual(fbxPose.GetMatrix(index), fbxMatrix);
                    }

                using (var fbxNode = FbxNode.Create(Manager, "node4"))
                    using (var fbxMatrix = new FbxMatrix()) {
                        // test with multiple bind pose arg
                        int index = fbxPose.Add(fbxNode, fbxMatrix, false, false); // true is default
                        Assert.Greater(index, -1);
                        Assert.AreEqual(fbxPose.GetNode(index), fbxNode);
                        Assert.AreEqual(fbxPose.GetMatrix(index), fbxMatrix);
                    }
            }
        }