// Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT.

package headlessexperimental

import (
	json 
	easyjson 
	jlexer 
	jwriter 
)

// suppress unused package warning
var (
	_ *json.RawMessage
	_ *jlexer.Lexer
	_ *jwriter.Writer
	_ easyjson.Marshaler
)

func easyjsonC5a4559bDecodeGithubComChromedpCdprotoHeadlessexperimental( *jlexer.Lexer,  *ScreenshotParams) {
	 := .IsStart()
	if .IsNull() {
		if  {
			.Consumed()
		}
		.Skip()
		return
	}
	.Delim('{')
	for !.IsDelim('}') {
		 := .UnsafeFieldName(false)
		.WantColon()
		if .IsNull() {
			.Skip()
			.WantComma()
			continue
		}
		switch  {
		case "format":
			(.Format).UnmarshalEasyJSON()
		case "quality":
			.Quality = int64(.Int64())
		case "optimizeForSpeed":
			.OptimizeForSpeed = bool(.Bool())
		default:
			.SkipRecursive()
		}
		.WantComma()
	}
	.Delim('}')
	if  {
		.Consumed()
	}
}
func easyjsonC5a4559bEncodeGithubComChromedpCdprotoHeadlessexperimental( *jwriter.Writer,  ScreenshotParams) {
	.RawByte('{')
	 := true
	_ = 
	if .Format != "" {
		const  string = ",\"format\":"
		 = false
		.RawString([1:])
		(.Format).MarshalEasyJSON()
	}
	if .Quality != 0 {
		const  string = ",\"quality\":"
		if  {
			 = false
			.RawString([1:])
		} else {
			.RawString()
		}
		.Int64(int64(.Quality))
	}
	if .OptimizeForSpeed {
		const  string = ",\"optimizeForSpeed\":"
		if  {
			 = false
			.RawString([1:])
		} else {
			.RawString()
		}
		.Bool(bool(.OptimizeForSpeed))
	}
	.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func ( ScreenshotParams) () ([]byte, error) {
	 := jwriter.Writer{}
	easyjsonC5a4559bEncodeGithubComChromedpCdprotoHeadlessexperimental(&, )
	return .Buffer.BuildBytes(), .Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func ( ScreenshotParams) ( *jwriter.Writer) {
	easyjsonC5a4559bEncodeGithubComChromedpCdprotoHeadlessexperimental(, )
}

// UnmarshalJSON supports json.Unmarshaler interface
func ( *ScreenshotParams) ( []byte) error {
	 := jlexer.Lexer{Data: }
	easyjsonC5a4559bDecodeGithubComChromedpCdprotoHeadlessexperimental(&, )
	return .Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func ( *ScreenshotParams) ( *jlexer.Lexer) {
	easyjsonC5a4559bDecodeGithubComChromedpCdprotoHeadlessexperimental(, )
}
func easyjsonC5a4559bDecodeGithubComChromedpCdprotoHeadlessexperimental1( *jlexer.Lexer,  *BeginFrameReturns) {
	 := .IsStart()
	if .IsNull() {
		if  {
			.Consumed()
		}
		.Skip()
		return
	}
	.Delim('{')
	for !.IsDelim('}') {
		 := .UnsafeFieldName(false)
		.WantColon()
		if .IsNull() {
			.Skip()
			.WantComma()
			continue
		}
		switch  {
		case "hasDamage":
			.HasDamage = bool(.Bool())
		case "screenshotData":
			.ScreenshotData = string(.String())
		default:
			.SkipRecursive()
		}
		.WantComma()
	}
	.Delim('}')
	if  {
		.Consumed()
	}
}
func easyjsonC5a4559bEncodeGithubComChromedpCdprotoHeadlessexperimental1( *jwriter.Writer,  BeginFrameReturns) {
	.RawByte('{')
	 := true
	_ = 
	if .HasDamage {
		const  string = ",\"hasDamage\":"
		 = false
		.RawString([1:])
		.Bool(bool(.HasDamage))
	}
	if .ScreenshotData != "" {
		const  string = ",\"screenshotData\":"
		if  {
			 = false
			.RawString([1:])
		} else {
			.RawString()
		}
		.String(string(.ScreenshotData))
	}
	.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func ( BeginFrameReturns) () ([]byte, error) {
	 := jwriter.Writer{}
	easyjsonC5a4559bEncodeGithubComChromedpCdprotoHeadlessexperimental1(&, )
	return .Buffer.BuildBytes(), .Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func ( BeginFrameReturns) ( *jwriter.Writer) {
	easyjsonC5a4559bEncodeGithubComChromedpCdprotoHeadlessexperimental1(, )
}

// UnmarshalJSON supports json.Unmarshaler interface
func ( *BeginFrameReturns) ( []byte) error {
	 := jlexer.Lexer{Data: }
	easyjsonC5a4559bDecodeGithubComChromedpCdprotoHeadlessexperimental1(&, )
	return .Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func ( *BeginFrameReturns) ( *jlexer.Lexer) {
	easyjsonC5a4559bDecodeGithubComChromedpCdprotoHeadlessexperimental1(, )
}
func easyjsonC5a4559bDecodeGithubComChromedpCdprotoHeadlessexperimental2( *jlexer.Lexer,  *BeginFrameParams) {
	 := .IsStart()
	if .IsNull() {
		if  {
			.Consumed()
		}
		.Skip()
		return
	}
	.Delim('{')
	for !.IsDelim('}') {
		 := .UnsafeFieldName(false)
		.WantColon()
		if .IsNull() {
			.Skip()
			.WantComma()
			continue
		}
		switch  {
		case "frameTimeTicks":
			.FrameTimeTicks = float64(.Float64())
		case "interval":
			.Interval = float64(.Float64())
		case "noDisplayUpdates":
			.NoDisplayUpdates = bool(.Bool())
		case "screenshot":
			if .IsNull() {
				.Skip()
				.Screenshot = nil
			} else {
				if .Screenshot == nil {
					.Screenshot = new(ScreenshotParams)
				}
				(*.Screenshot).UnmarshalEasyJSON()
			}
		default:
			.SkipRecursive()
		}
		.WantComma()
	}
	.Delim('}')
	if  {
		.Consumed()
	}
}
func easyjsonC5a4559bEncodeGithubComChromedpCdprotoHeadlessexperimental2( *jwriter.Writer,  BeginFrameParams) {
	.RawByte('{')
	 := true
	_ = 
	if .FrameTimeTicks != 0 {
		const  string = ",\"frameTimeTicks\":"
		 = false
		.RawString([1:])
		.Float64(float64(.FrameTimeTicks))
	}
	if .Interval != 0 {
		const  string = ",\"interval\":"
		if  {
			 = false
			.RawString([1:])
		} else {
			.RawString()
		}
		.Float64(float64(.Interval))
	}
	if .NoDisplayUpdates {
		const  string = ",\"noDisplayUpdates\":"
		if  {
			 = false
			.RawString([1:])
		} else {
			.RawString()
		}
		.Bool(bool(.NoDisplayUpdates))
	}
	if .Screenshot != nil {
		const  string = ",\"screenshot\":"
		if  {
			 = false
			.RawString([1:])
		} else {
			.RawString()
		}
		(*.Screenshot).MarshalEasyJSON()
	}
	.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func ( BeginFrameParams) () ([]byte, error) {
	 := jwriter.Writer{}
	easyjsonC5a4559bEncodeGithubComChromedpCdprotoHeadlessexperimental2(&, )
	return .Buffer.BuildBytes(), .Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func ( BeginFrameParams) ( *jwriter.Writer) {
	easyjsonC5a4559bEncodeGithubComChromedpCdprotoHeadlessexperimental2(, )
}

// UnmarshalJSON supports json.Unmarshaler interface
func ( *BeginFrameParams) ( []byte) error {
	 := jlexer.Lexer{Data: }
	easyjsonC5a4559bDecodeGithubComChromedpCdprotoHeadlessexperimental2(&, )
	return .Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func ( *BeginFrameParams) ( *jlexer.Lexer) {
	easyjsonC5a4559bDecodeGithubComChromedpCdprotoHeadlessexperimental2(, )
}