AutoNav?

Io 
http://www.iolanguage.com

http://www.iolanguage.com/downloads/ 
(no direct-link single-click installer available)

create a folder "Talker"
create a file "talker.io"
create a file "main.io"

# from command line
cmd> io main.io

# from shell
cmd> io  [opens interactive io shell]
io> doFile("Talker.io")
io> john := Talker clone
io> john sayHello

# within file "Talker.io"

// within file "talker"

Talker := Object clone do(
  sayHello := method(
     writeln("Hello world")
  )
)

Talker newSlot("name", "")
Talker newSlot("age", 0)

Talker sayYourName := method(writeln(name))
Talker sayYourAge := method(writeln(age))

Talker sayYourClassName := method(writeln(self type)) 
Talker sayYourInstanceVarName := method( writeln("LIMITATION: instance var name") )

Talker thisMethodName := method(
  writeln(sender thisMessage name)
)

Talker sayHelloAdvanced := method(
  write("sayHelloAdvanced: ")
  sayHello
)

Talker sayYourClassDefinition := method(self print)
// limited quality, partly binary output

Talker sayYourClassCode := method(
  Block asString := method(getSlot("self") code)
  self slotNames foreach(i, slotName,
    writeln(slotName, " := ", self getSlot(slotName) asString)
  )
)


# within main.io


john := Talker clone
john sayHello

john setName("John Doe")  
john setAge(19)
john sayYourName
john sayYourAge

john sayYourClassName 
john sayYourInstanceVarName 

john.thisMethodName    
john.sayHelloAdvanced

john sayYourClassDefinition
john sayYourClassCode