type lvalue … type address … func (a *address) load(fn *Function) Value { … } func (a *address) store(fn *Function, v Value) { … } func (a *address) address(fn *Function) Value { … } func (a *address) typ() types.Type { … } type element … func (e *element) load(fn *Function) Value { … } func (e *element) store(fn *Function, v Value) { … } func (e *element) address(fn *Function) Value { … } func (e *element) typ() types.Type { … } type lazyAddress … func (l *lazyAddress) load(fn *Function) Value { … } func (l *lazyAddress) store(fn *Function, v Value) { … } func (l *lazyAddress) address(fn *Function) Value { … } func (l *lazyAddress) typ() types.Type { … } type blank … func (bl blank) load(fn *Function) Value { … } func (bl blank) store(fn *Function, v Value) { … } func (bl blank) address(fn *Function) Value { … } func (bl blank) typ() types.Type { … }