code: func Decode(m []byte) (context.Context, error) {
  	if len(m) == 0 {
  		// TODO maybe return an error
  		return nil, nil
  	}
  	mp := make(map[string]interface{}, 0)
  	err := json.Unmarshal(m, &mp)
  	if err != nil {
  		return nil, err
  	}
  	return FromMap(mp), nil
  }
docs: // Decode returns a context given a binary encoded message