code: func (s Session) sessionDataFromMap(key string) (result interface{}, err error) {
  	var mapValue map[string]interface{}
  	uncastMapValue, found := s[SessionMapKeyName]
  	if !found {
  		mapValue = map[string]interface{}{}
  		s[SessionMapKeyName] = mapValue
  	} else if mapValue, found = uncastMapValue.(map[string]interface{}); !found {
  		// Unusual means that the value in the session was not expected
  		sessionLog.Errorf("Unusual means that the value in the session was not expected", "session", uncastMapValue)
  		mapValue = map[string]interface{}{}
  		s[SessionMapKeyName] = mapValue
  	}
  
  	// Try to extract the key from the map
  	result, found = mapValue[key]
  	if !found {
  		result, err = s.convertSessionData(key, nil)
  		if err == nil {
  			mapValue[key] = result
  		}
  	}
  	return
  }
docs: // Always converts the data from the session mapped objects into the target,
  // it will store the results under the session key name SessionMapKeyName