implict type cast in generic method
why do I get a compiler error in the following code stating: `Cannot implicty convert type SpecialNode to T` even though T must derive from NodeBase as I defined in the where clause and even though SpecialNode actually derived from NodeBase?

    public static T GetNode<T>() where T : NodeBase
 {
  if (typeof(T) == typeof(SpecialNode))
  {
   return MySpecialNode; // <-- compiler error
  }
        if (typeof(T) == typeof(OtherSpecialNode))
             {
            return MyOtherSpecialNode; // <-- compiler error
        }
                 ...
                return defaut(T);
 }
implict type cast in generic method
===

why do I get a compiler error in the following code stating: `Cannot implicty convert type SpecialNode to T` even though T must derive from NodeBase as I defined in the where clause and even though SpecialNode actually derived from NodeBase?

    public static T GetNode<T>() where T : NodeBase
 {
  if (typeof(T) == typeof(SpecialNode))
  {
   return MySpecialNode; // <-- compiler error
  }
        if (typeof(T) == typeof(OtherSpecialNode))
             {
            return MyOtherSpecialNode; // <-- compiler error
        }
                 ...
                return defaut(T);
 }