(PNG) ackage main
       mport (
 (???) 
 (???) onst WIDTH = 10
 (???) onst HEIGHT = 24
 (???) ype Tetris struct {
 (???) 
 (???) unc NewTetris(renderer Renderer) *Tetris {
 (???) 
 (???) unc (t *Tetris) NewGame() {
 (???) 
 (???) unc (t *Tetris) newBlock() {
 (???) 
 (???) unc (t *Tetris) move(deltaColumn, deltaRow, newRotation int) bool {
 (???) 
 (???) unc indexOf(blocks *[]Block, block *Block) int {
 (???) 
 (???) unc (t *Tetris) fall() bool {
 (???) 
 (???) unc (t *Tetris) drop() {
 (???) 
 (???) unc (t *Tetris) draw(column, row int, block *Block, rotation int, color string) {
 (???) 
 (???) unc initBucket() [][]int {
 (???) 
 (???) unc (t *Tetris) setBuffer(set, column, row int, block *Block, rotation int) {
 (???) 
 (???) / testBlocks tests if a block can be placed and returns true if so, false otherwise
 (???) unc (t *Tetris) testBlock(deltaColumn, deltaRow int, block *Block, rotation int) bool {
 (???) 
 (???) unc (t *Tetris) coords(block *Block, rotation, column, row int) []Coord {
 (???) 
 (???) unc (t *Tetris) randomBlock() *Block {
 (???) 
 (???) unc (t *Tetris) sweepBucket() int {
 (???) 
 (???) unc (t *Tetris) redrawBucket() {
 (???) 
 (???) unc (t *Tetris) gameOver() {
 (???) 
 (???) unc main() {
 (???)