Index types, nullable reference types, default interfaces, and async streams should improve code quality and make software more flexible over the long term