This is a simplified version of what I need to do. In its current state, what I am trying to do doesn't make sense. However it shows the problem in a simple way. 

I need to call a **function2<T>() where T: TheClass, new()** within a **function1<T>() where T: class**

```
Something<T> function1<T>() where T : class {
  //cannot call function2 directly due to compile error
  //return function2<T>();

  //What I need as a pseudo code
  if (T is TheClass and T is new())
    return Then function2<T>()
  else
    throw Exception
} 

Something<T> function2<T>() where T : TheClass, new() {
  //...
} 

```