Exploring the design space of AI based code completion engines