code: func (m *GenericParser) parseContainer(val reflect.Value) (Object, error) {
  	if dtype := val.Type(); dtype.Elem().Kind() == reflect.Uint8 {
  		if dtype.Kind() == reflect.Slice {
  			return S(val.Bytes()), nil
  		} else if dtype.Kind() == reflect.Array {
  			ret := make([]byte, dtype.Len())
  			for i := 0; i < dtype.Len(); i++ {
  				ret[i] = val.Index(i).Interface().(byte)
  			}
  			return S(ret), nil
  		} else {
  			panic("should only be slice or array")
  		}
  	}
  
  	ret := make(Objects, val.Len())
  	for i := 0; i < val.Len(); i++ {
  		ival := val.Index(i)
  		ival = deref(ival)
  		iobj, err := m.parseValue(ival)
  		if err != nil {
  			return nil, errors.Wrap(err, "parsing value")
  		}
  		ret[i] = iobj
  	}
  	return ret, nil
  }
docs: // parseContainer parses arrays and slices.