in ExpressionBuilder/ExpressionBuilder/ExpressionNodes/ExpressionBuilder.ExpressionNode.cs [202:248]
internal static T CreateExpressionNode<T>() where T : class
{
T newNode;
if (typeof(T) == typeof(BooleanNode))
{
newNode = new BooleanNode() as T;
}
else if (typeof(T) == typeof(ScalarNode))
{
newNode = new ScalarNode() as T;
}
else if (typeof(T) == typeof(Vector2Node))
{
newNode = new Vector2Node() as T;
}
else if (typeof(T) == typeof(Vector3Node))
{
newNode = new Vector3Node() as T;
}
else if (typeof(T) == typeof(Vector4Node))
{
newNode = new Vector4Node() as T;
}
else if (typeof(T) == typeof(ColorNode))
{
newNode = new ColorNode() as T;
}
else if (typeof(T) == typeof(QuaternionNode))
{
newNode = new QuaternionNode() as T;
}
else if (typeof(T) == typeof(Matrix3x2Node))
{
newNode = new Matrix3x2Node() as T;
}
else if (typeof(T) == typeof(Matrix4x4Node))
{
newNode = new Matrix4x4Node() as T;
}
else
{
throw new Exception("unexpected type");
}
return newNode;
}