code: func (s Session) GetProperty(key string, value interface{}) (interface{}, error) {
  	// Capitalize the first letter
  	key = strings.Title(key)
  
  	sessionLog.Info("getProperty", "key", key, "value", value)
  
  	// For a map it is easy
  	if reflect.TypeOf(value).Kind() == reflect.Map {
  		val := reflect.ValueOf(value)
  		valueOf := val.MapIndex(reflect.ValueOf(key))
  		if valueOf == reflect.Zero(reflect.ValueOf(value).Type()) {
  			return nil, nil
  		}
  		//idx := val.MapIndex(reflect.ValueOf(key))
  		if !valueOf.IsValid() {
  			return nil, nil
  		}
  
  		return valueOf.Interface(), nil
  	}
  
  	objValue := s.reflectValue(value)
  	field := objValue.FieldByName(key)
  	if !field.IsValid() {
  		return nil, SESSION_VALUE_NOT_FOUND
  	}
  
  	return field.Interface(), nil
  }
docs: // Extract the values from the session