This document discusses reflection in computational systems. It defines reflective systems as systems that incorporate causally connected structures representing themselves. It discusses structural reflection, which is concerned with static structure, and behavioral reflection, which is concerned with execution. It presents sub-method structural reflection as a way to provide a high-level model of elements within methods. It also discusses partial behavioral reflection using hooksets to selectively reify operations and provide a flexible way to define the protocol between base and meta-levels.