{*ast.File [jingo]}


{*ast.GenDecl -> *ast.ImportSpec -> *ast.BasicLit [STRING "reflect"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "unsafe"]}
{*ast.GenDecl -> *ast.TypeSpec [SliceEncoder]}
{*ast.StructType -> *ast.FieldList -> *ast.Field [instruction]}
{*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [t unsafe Pointer]}
{*ast.Field [w]}
{*ast.StarExpr [Buffer]}
{*ast.Field [tt]}
{*ast.SelectorExpr [reflect Type]}
{*ast.Field [offset uintptr]}


function name is Marshal 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder Marshal]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [s]}
	 {*ast.InterfaceType []}
	 {*ast.FieldList -> *ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= p]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr [reflect ValueOf s Pointer]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e instruction p w]}


function name is NewSliceEncoder 
	 { [NewSliceEncoder]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [t]}
	 {*ast.InterfaceType []}
	 {*ast.FieldList -> *ast.FieldList -> *ast.Field -> *ast.StarExpr [SliceEncoder]}
	 {*ast.BlockStmt -> *ast.AssignStmt [:= e]}
	 {*ast.UnaryExpr [&]}
	 {*ast.CompositeLit [SliceEncoder]}
	 {*ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e tt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [reflect TypeOf t]}
	 {*ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e offset]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Size]}
	 {*ast.SwitchStmt -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause [timeType]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e timeInstr]}
	 {*ast.ReturnStmt [e]}
	 {*ast.CaseClause [escapeStringType]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e stringInstr ptrEscapeStringToBuf]}
	 {*ast.ReturnStmt [e]}
	 {*ast.SwitchStmt -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Kind]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.SelectorExpr [reflect Slice]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e sliceInstr]}
	 {*ast.CaseClause -> *ast.SelectorExpr [reflect Struct]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e structInstr]}
	 {*ast.CaseClause -> *ast.SelectorExpr [reflect String]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e stringInstr ptrStringToBuf]}
	 {*ast.CaseClause -> *ast.SelectorExpr [reflect Ptr]}
	 {*ast.SwitchStmt -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Elem]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause [timeType]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e ptrTimeInstr]}
	 {*ast.ReturnStmt [e]}
	 {*ast.CaseClause [escapeStringType]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e ptrStringInstr ptrEscapeStringToBuf]}
	 {*ast.ReturnStmt [e]}
	 {*ast.SwitchStmt -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Elem Kind]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.SelectorExpr [reflect Slice]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e ptrSliceInstr]}
	 {*ast.CaseClause -> *ast.SelectorExpr [reflect Struct]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e ptrStrctInstr]}
	 {*ast.CaseClause -> *ast.SelectorExpr [reflect String]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e ptrStringInstr ptrStringToBuf]}
	 {*ast.CaseClause -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e ptrOtherInstr]}
	 {*ast.CaseClause -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [e otherInstr]}
	 {*ast.ReturnStmt [e]}


{*ast.GenDecl -> *ast.ValueSpec [null]}
{*ast.CallExpr -> *ast.ArrayType [byte]}
{*ast.BasicLit [STRING "null"]}
{*ast.ValueSpec [zero]}
{*ast.CallExpr [uintptr]}
{*ast.BasicLit [INT 0]}
{*ast.GenDecl -> *ast.TypeSpec [sliceHeader]}
{*ast.StructType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [Data unsafe Pointer]}
{*ast.Field [Len int]}
{*ast.Field [Cap int]}


function name is sliceInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder sliceInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.AssignStmt [:= enc]}
	 {*ast.CallExpr [NewSliceEncoder]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr [reflect New]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Elem Interface]}
	 {*ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ',']}
	 {*ast.AssignStmt [:= s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [enc Marshal s w]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


function name is structInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder structInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.AssignStmt [:= enc]}
	 {*ast.CallExpr [NewStructEncoder]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr [reflect New]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Elem Interface]}
	 {*ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ',']}
	 {*ast.AssignStmt [:= s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [enc Marshal s w]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


function name is stringInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder stringInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [conv]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.Field -> *ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [== i]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '"']}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w Write]}
	 {*ast.CallExpr -> *ast.ArrayType [byte]}
	 {*ast.BasicLit [STRING `","`]}
	 {*ast.ExprStmt -> *ast.CallExpr [conv]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset w]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [== i]}
	 {*ast.BinaryExpr [-]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.BasicLit [INT 1]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '"']}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


function name is otherInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder otherInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.AssignStmt [:= conv ok]}
	 {*ast.IndexExpr [typeconv]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Kind]}
	 {*ast.IfStmt []}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ',']}
	 {*ast.ExprStmt -> *ast.CallExpr [conv]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset w]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


function name is timeInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder timeInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ',']}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '"']}
	 {*ast.ExprStmt -> *ast.CallExpr [ptrTimeToBuf]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset w]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '"']}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


function name is ptrSliceInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder ptrSliceInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.AssignStmt [:= enc]}
	 {*ast.CallExpr [NewSliceEncoder]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr [reflect New]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Elem Elem Interface]}
	 {*ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ',']}
	 {*ast.AssignStmt [:= s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [== s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w Write null]}
	 {*ast.BranchStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [enc Marshal s w]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


function name is ptrStrctInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder ptrStrctInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.AssignStmt [:= enc]}
	 {*ast.CallExpr [NewStructEncoder]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr [reflect New]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Elem Elem Interface]}
	 {*ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ',']}
	 {*ast.AssignStmt [:= s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [== s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w Write null]}
	 {*ast.BranchStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [enc Marshal s w]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


function name is ptrStringInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder ptrStringInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [conv]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.Field -> *ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ',']}
	 {*ast.AssignStmt [:= s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [== s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w Write null]}
	 {*ast.BranchStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '"']}
	 {*ast.ExprStmt -> *ast.CallExpr [conv s w]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '"']}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


function name is ptrOtherInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder ptrOtherInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.AssignStmt [:= conv ok]}
	 {*ast.IndexExpr [typeconv]}
	 {*ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.CallExpr -> *ast.SelectorExpr -> *ast.SelectorExpr [e tt Elem Elem Kind]}
	 {*ast.IfStmt []}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ',']}
	 {*ast.AssignStmt [:= s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [== s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w Write null]}
	 {*ast.BranchStmt -> *ast.ExprStmt -> *ast.CallExpr [conv s w]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


function name is ptrTimeInstr 
	 {*ast.FieldList -> *ast.Field [e]}
	 {*ast.StarExpr [SliceEncoder ptrTimeInstr]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.BlockStmt -> *ast.AssignStmt [=]}
	 {*ast.SelectorExpr [e instruction]}
	 {*ast.FuncLit -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [v unsafe Pointer]}
	 {*ast.Field [w]}
	 {*ast.StarExpr [Buffer]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '[']}
	 {*ast.AssignStmt [:= sl]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr [sliceHeader v]}
	 {*ast.ForStmt -> *ast.AssignStmt [:= i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.BasicLit [INT 0]}
	 {*ast.BinaryExpr [< i]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Len]}
	 {*ast.IncDecStmt [i]}
	 {*ast.BlockStmt -> *ast.IfStmt []}
	 {*ast.BinaryExpr [> i zero]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ',']}
	 {*ast.AssignStmt [:= s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.StarExpr -> *ast.CallExpr -> *ast.ParenExpr -> *ast.StarExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.BinaryExpr [+]}
	 {*ast.CallExpr [uintptr]}
	 {*ast.SelectorExpr [sl Data]}
	 {*ast.ParenExpr []}
	 {*ast.BinaryExpr [* i]}
	 {*ast.SelectorExpr [e offset]}
	 {*ast.IfStmt []}
	 {*ast.BinaryExpr [== s]}
	 {*ast.CallExpr -> *ast.SelectorExpr [unsafe Pointer nil]}
	 {*ast.BlockStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w Write null]}
	 {*ast.BranchStmt -> *ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '"']}
	 {*ast.ExprStmt -> *ast.CallExpr [ptrTimeToBuf s w]}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR '"']}
	 {*ast.ExprStmt -> *ast.CallExpr -> *ast.SelectorExpr [w WriteByte]}
	 {*ast.BasicLit [CHAR ']']}


