code: func MT(L *lua.LState, value interface{}) *Metatable {
  	if value == nil {
  		return nil
  	}
  
  	switch typ := reflect.TypeOf(value); typ.Kind() {
  	case reflect.Array, reflect.Chan, reflect.Map, reflect.Ptr, reflect.Slice, reflect.Struct:
  		return &Metatable{
  			LTable: getMetatable(L, typ),
  		}
  	}
  	return nil
  }
docs: // MT returns the metatable for value's type. nil is returned if value's type
  // does not use a custom metatable.