Reflection doesn't end with classes and objects. Most of the Kotlin system can be accessed, and that includes functions and properties. Let's start with a class that contains some member functions, an extension function for Double, and a couple of properties:
    class Rocket() { 
      var lat: Double = 0.0 
      var long: Double = 0.0 
      fun explode() { 
        println("Boom") 
      } 
 
      fun setCourse(lat: Double, long: Double) { 
        require(lat.isValid()) 
        require(long.isValid()) 
        this.lat = lat 
        this.long = long 
      } 
 
      fun Double.isValid() = Math.abs(this) <= 180 
    } 
The extension function is used to check that the Double parameter is a valid latitude or longitude whenever we invoke setCourse.
The next function is similar to the function for printing constructors...