{*ast.File [chunk]}


{*ast.GenDecl -> *ast.ImportSpec -> *ast.BasicLit [STRING "sort"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "unsafe"]}
{*ast.ImportSpec [jsoniter]}
{*ast.BasicLit [STRING "github.com/json-iterator/go"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "github.com/prometheus/common/model"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "github.com/prometheus/prometheus/model/labels"]}


function name is init 
	 { [init]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [jsoniter RegisterTypeDecoderFunc]}
	 {*ast.BasicLit [STRING "labels.Labels"]}
	 { [decodeLabels]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [jsoniter RegisterTypeEncoderFunc]}
	 {*ast.BasicLit [STRING "labels.Labels"]}
	 { [encodeLabels labelsIsEmpty]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [jsoniter RegisterTypeDecoderFunc]}
	 {*ast.BasicLit [STRING "model.Time"]}
	 { [decodeModelTime]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [jsoniter RegisterTypeEncoderFunc]}
	 {*ast.BasicLit [STRING "model.Time"]}
	 { [encodeModelTime modelTimeIsEmpty]}


function name is decodeLabels 
	 { [decodeLabels]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [ptr unsafe Pointer]}
	 {*ast.Field [iter]}
	 {*ast.StarExpr -> *ast.SelectorExpr [jsoniter Iterator]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= labelsPtr]}
	 {*ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [labels Labels ptr]}
	 {*ast.AssignStmt [=]}
	 {*ast.StarExpr [labelsPtr]}
	 {*ast.CallExpr [make]}
	 {*ast.SelectorExpr [labels Labels]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BasicLit [INT 10]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [iter ReadMapCB]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field [iter]}
	 {*ast.StarExpr -> *ast.SelectorExpr [jsoniter Iterator]}
	 {*ast.Field [key string]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= value]}
	 {*ast.CallExpr -> *ast.SelectorExpr [iter ReadString]}
	 {*ast.AssignStmt [=]}
	 {*ast.StarExpr [labelsPtr]}
	 {*ast.CallExpr [append]}
	 {*ast.StarExpr [labelsPtr]}
	 {*ast.CompositeLit -> *ast.SelectorExpr [labels Label]}
	 {*ast.KeyValueExpr [Name key]}
	 {*ast.KeyValueExpr [Value value]}
	 {*ast.ReturnStmt [true]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [sort Sort]}
	 {*ast.StarExpr [labelsPtr]}


function name is encodeLabels 
	 { [encodeLabels]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [ptr unsafe Pointer]}
	 {*ast.Field [stream]}
	 {*ast.StarExpr -> *ast.SelectorExpr [jsoniter Stream]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= labelsPtr]}
	 {*ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [labels Labels ptr]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteObjectStart]}
	 {*ast.RangeStmt [i v]}
	 {*ast.StarExpr [labelsPtr]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [!= i]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteMore]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteString]}
	 {*ast.SelectorExpr [v Name]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteRaw]}
	 {*ast.BasicLit [STRING `:`]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteString]}
	 {*ast.SelectorExpr [v Value]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteObjectEnd]}


function name is labelsIsEmpty 
	 { [labelsIsEmpty]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [ptr unsafe Pointer]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= labelsPtr]}
	 {*ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [labels Labels ptr]}
	 {*ast.ReturnStmt []}
	 {*ast.BinaryExpr [==]}
	 {*ast.CallExpr [len]}
	 {*ast.StarExpr [labelsPtr]}
	 {*ast.BasicLit [INT 0]}


function name is decodeModelTime 
	 { [decodeModelTime]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [ptr unsafe Pointer]}
	 {*ast.Field [iter]}
	 {*ast.StarExpr -> *ast.SelectorExpr [jsoniter Iterator]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= pt]}
	 {*ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [model Time ptr]}
	 {*ast.AssignStmt [:= f]}
	 {*ast.CallExpr -> *ast.SelectorExpr [iter ReadFloat64]}
	 {*ast.AssignStmt [=]}
	 {*ast.StarExpr [pt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [model Time]}
	 {*ast.CallExpr [int64]}
	 {*ast.BinaryExpr [* f]}
	 {*ast.BasicLit [INT 1000]}


function name is encodeModelTime 
	 { [encodeModelTime]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [ptr unsafe Pointer]}
	 {*ast.Field [stream]}
	 {*ast.StarExpr -> *ast.SelectorExpr [jsoniter Stream]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= pt]}
	 {*ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [model Time ptr]}
	 {*ast.AssignStmt [:= t]}
	 {*ast.CallExpr [int64]}
	 {*ast.StarExpr [pt]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [< t]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteRaw]}
	 {*ast.BasicLit [STRING `-`]}
	 {*ast.AssignStmt [= t]}
	 {*ast.UnaryExpr [- t]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteInt64]}
	 {*ast.BinaryExpr [/ t]}
	 {*ast.BasicLit [INT 1000]}
	 {*ast.AssignStmt [:= fraction]}
	 {*ast.BinaryExpr [% t]}
	 {*ast.BasicLit [INT 1000]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [!= fraction]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteRaw]}
	 {*ast.BasicLit [STRING `.`]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [< fraction]}
	 {*ast.BasicLit [INT 100]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteRaw]}
	 {*ast.BasicLit [STRING `0`]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [< fraction]}
	 {*ast.BasicLit [INT 10]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteRaw]}
	 {*ast.BasicLit [STRING `0`]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [stream WriteInt64 fraction]}


function name is modelTimeIsEmpty 
	 { [modelTimeIsEmpty]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [ptr unsafe Pointer]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [false]}


