Reconstruct GPProducer, Let AbstractGP be a inner type