code: func (s *Session) Get(ref types.ManagedObjectReference) mo.Reference {
  	obj := s.Registry.Get(ref)
  	if obj != nil {
  		return obj
  	}
  
  	// Return a session "view" of certain singleton objects
  	switch ref.Type {
  	case "SessionManager":
  		// Clone SessionManager so the PropertyCollector can properly report CurrentSession
  		m := *Map.SessionManager()
  		m.CurrentSession = &s.UserSession
  
  		// TODO: we could maintain SessionList as part of the SessionManager singleton
  		for _, session := range m.sessions {
  			m.SessionList = append(m.SessionList, session.UserSession)
  		}
  
  		return &m
  	case "PropertyCollector":
  		if ref == Map.content().PropertyCollector {
  			return s.Put(NewPropertyCollector(ref))
  		}
  	}
  
  	return Map.Get(ref)
  }
docs: // Get wraps Registry.Get, session-izing singleton objects such as SessionManager and the root PropertyCollector.