code: func parseImplementsInterfaces(parser *Parser) ([]*ast.Named, error) {
  	types := []*ast.Named{}
  	if parser.Token.Value == "implements" {
  		if err := advance(parser); err != nil {
  			return nil, err
  		}
  		// optional leading ampersand
  		skip(parser, lexer.AMP)
  		for {
  			ttype, err := parseNamed(parser)
  			if err != nil {
  				return types, err
  			}
  			types = append(types, ttype)
  			if skipped, err := skip(parser, lexer.AMP); !skipped {
  				break
  			} else if err != nil {
  				return types, err
  			}
  		}
  	}
  	return types, nil
  }
docs: /**
   * ImplementsInterfaces :
   *   - implements `&`? NamedType
   *   - ImplementsInterfaces & NamedType
   */