A technique where a model fills in missing or incomplete code in the middle of existing code, using both the code before and after the gap as context.
Code generation, debugging, explanation, and refactoring