I'm tring to do :

```
public abstract class Base
{
    public abstract Task Execute(); 
}

public abstract class Concrete<T> : Base where T : class
{
    new public abstract Task<T> Execute();
}

```

But for some reason I am getting the compiler error :

> 
> CS0533 'Concrete.Execute()' hides inherited abstract member 'Program.Base.Execute()
> 
> 
> 

I've hidden plenty of members in the past but never met this side case and I'm quite puzzled here. Spent a long time on MSDN and the web but couldn't find anything about this behaviour.

I would really appreciate any insight on the issue. 

Here's [the fiddle](https://dotnetfiddle.net/ELjZB6).