Is `P` really required here? It doesn't seem to be referenced. If so, this could be simplified to 

    public interface GlobalContext<G extends GlobalContext<G, E>, E extends EntityContext<E, ?>>
         extends GlobalOptions<G>