Getting system.object instead of null

I’m creating a C# component using VS.
It push a list of data according to a sting into a DataTree.
Sometimes I may have null data input T. However this will be output as System.Object value.
How do I actually return a null value?
another thing i don’t understand is how I can verify that an element actually has a null value directly within my script.

         protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
             pManager.AddTextParameter("G", "G", "Input Gate", GH_ParamAccess.item);
             pManager.AddGenericParameter("T", "T", "Input Data", GH_ParamAccess.item);
         protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager)
             pManager.AddGenericParameter("D", "D", "Input Data", GH_ParamAccess.tree);
          protected override void SolveInstance(IGH_DataAccess DA)
             var T = new Object();
             var myPath = new GH_Path();
             string G = "";
             DA.GetData("T", ref T);
             DA.GetData("G", ref G);
            DataTree<object> Data = new DataTree<object>();
             Data.Add(T, new GH_Path(myPath));
             DA.SetDataTree(0, Data);

when you instantiate the output DataTree, set the content type to GH_ObjectWrapper
also insert the reference atop everything using Grasshopper.Kernel.Types