// magic.go
package main

import "fmt"

type Base struct{}

func (Base) Magic() { fmt.Print("base magic ") }

func (self Base) MoreMagic() {
	self.Magic()
	self.Magic()
}

type Voodoo struct {
	Base
}

func (Voodoo) Magic() { fmt.Println("voodoo magic") }

func main() {
	v := new(Voodoo)
	v.Magic()
	v.MoreMagic()
}

/* Output:
voodoo magic
base magic base magic
*/
