code: func (s Session) GetInto(key string, target interface{}, force bool) (result interface{}, err error) {
  	if v, found := s[key]; found && !force {
  		return v, nil
  	}
  	splitKey := strings.Split(key, ".")
  	rootKey := splitKey[0]
  
  	// Force always recreates the object from the session data map
  	if force {
  		if target == nil {
  			if result, err = s.sessionDataFromMap(key); err != nil {
  				return
  			}
  		} else if result, err = s.sessionDataFromObject(rootKey, target); err != nil {
  			return
  		}
  
  		return s.getNestedProperty(splitKey, result)
  	}
  
  	// Attempt to find the key in the session, this is the most generalized form
  	v, found := s[rootKey]
  	if !found {
  		if target == nil {
  			// Try to fetch it from the session
  
  			if v, err = s.sessionDataFromMap(rootKey); err != nil {
  				return
  			}
  		} else if v, err = s.sessionDataFromObject(rootKey, target); err != nil {
  			return
  		}
  	}
  
  	return s.getNestedProperty(splitKey, v)
  }
docs: // Get into the specified value.
  // If value exists in the session it will just return the value