I am not sure I understand why most of the functions that already declared in CoreContextAwarePluginInterface are redeclared here, but I guess it's because you need to return different types than the parent interface. I don't think that's a safe idea: that would make the two interfaces not swappable and basically makes them hidden-ly incompatible.