code: func (p *parserImpl) parse(
  	blob json.RawMessage,
  ) ([]*Comment, []*Post, []*Message, error) {
  	comments, posts, msgs, listingErr := parseRawListing(blob)
  	if listingErr == nil {
  		return comments, posts, msgs, nil
  	}
  
  	post, threadErr := parseThread(blob)
  	if threadErr == nil {
  		return nil, []*Post{post}, nil, nil
  	}
  
  	return nil, nil, nil, fmt.Errorf(
  		"failed to parse as listing [%v] or thread [%v]",
  		listingErr, threadErr,
  	)
  }
docs: // parse parses any Reddit response and provides the elements in it.