{*ast.File [execution]}


{*ast.GenDecl -> *ast.ImportSpec -> *ast.BasicLit [STRING "reflect"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "unsafe"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "github.com/pkg/errors"]}
{*ast.ImportSpec -> *ast.BasicLit [STRING "gorgonia.org/tensor/internal/storage"]}


function name is ReduceFirst 
	 {*ast.FieldList -> *ast.Field [e E ReduceFirst]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [t]}
	 {*ast.SelectorExpr [reflect Type]}
	 {*ast.Field [data]}
	 {*ast.StarExpr -> *ast.SelectorExpr [storage Header]}
	 {*ast.Field [retVal]}
	 {*ast.StarExpr -> *ast.SelectorExpr [storage Header]}
	 {*ast.Field [split int]}
	 {*ast.Field [size int]}
	 {*ast.Field [fn]}
	 {*ast.InterfaceType []}
	 {*ast.FieldList -> *ast.FieldList -> *ast.Field [err error]}
	 {*ast.BlockStmt []}
	 {*ast.SwitchStmt [t]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause [Bool]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Bools]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Bools]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [bool]}
	 {*ast.Field -> *ast.ArrayType [bool]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstB dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [bool]}
	 {*ast.Field [bool]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstB dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Ints]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Ints]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int]}
	 {*ast.Field -> *ast.ArrayType [int]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstI dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int]}
	 {*ast.Field [int]}
	 {*ast.FieldList -> *ast.Field [int]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstI dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int8]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int8s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int8s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int8]}
	 {*ast.Field -> *ast.ArrayType [int8]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstI8 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int8]}
	 {*ast.Field [int8]}
	 {*ast.FieldList -> *ast.Field [int8]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstI8 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int16]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int16s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int16s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int16]}
	 {*ast.Field -> *ast.ArrayType [int16]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstI16 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int16]}
	 {*ast.Field [int16]}
	 {*ast.FieldList -> *ast.Field [int16]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstI16 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int32]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int32s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int32s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int32]}
	 {*ast.Field -> *ast.ArrayType [int32]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstI32 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int32]}
	 {*ast.Field [int32]}
	 {*ast.FieldList -> *ast.Field [int32]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstI32 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int64]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int64s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int64]}
	 {*ast.Field -> *ast.ArrayType [int64]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstI64 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int64]}
	 {*ast.Field [int64]}
	 {*ast.FieldList -> *ast.Field [int64]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstI64 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uints]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uints]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint]}
	 {*ast.Field -> *ast.ArrayType [uint]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstU dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint]}
	 {*ast.Field [uint]}
	 {*ast.FieldList -> *ast.Field [uint]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstU dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint8]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint8s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint8s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint8]}
	 {*ast.Field -> *ast.ArrayType [uint8]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstU8 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint8]}
	 {*ast.Field [uint8]}
	 {*ast.FieldList -> *ast.Field [uint8]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstU8 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint16]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint16s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint16s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint16]}
	 {*ast.Field -> *ast.ArrayType [uint16]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstU16 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint16]}
	 {*ast.Field [uint16]}
	 {*ast.FieldList -> *ast.Field [uint16]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstU16 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint32]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint32s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint32s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint32]}
	 {*ast.Field -> *ast.ArrayType [uint32]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstU32 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint32]}
	 {*ast.Field [uint32]}
	 {*ast.FieldList -> *ast.Field [uint32]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstU32 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint64]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint64s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint64]}
	 {*ast.Field -> *ast.ArrayType [uint64]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstU64 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint64]}
	 {*ast.Field [uint64]}
	 {*ast.FieldList -> *ast.Field [uint64]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstU64 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uintptr]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uintptrs]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uintptrs]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uintptr]}
	 {*ast.Field -> *ast.ArrayType [uintptr]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstUintptr dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.Field [uintptr]}
	 {*ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstUintptr dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Float32]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Float32s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Float32s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [float32]}
	 {*ast.Field -> *ast.ArrayType [float32]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstF32 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [float32]}
	 {*ast.Field [float32]}
	 {*ast.FieldList -> *ast.Field [float32]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstF32 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Float64]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Float64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Float64s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [float64]}
	 {*ast.Field -> *ast.ArrayType [float64]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstF64 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [float64]}
	 {*ast.Field [float64]}
	 {*ast.FieldList -> *ast.Field [float64]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstF64 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Complex64]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Complex64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Complex64s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [complex64]}
	 {*ast.Field -> *ast.ArrayType [complex64]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstC64 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [complex64]}
	 {*ast.Field [complex64]}
	 {*ast.FieldList -> *ast.Field [complex64]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstC64 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Complex128]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Complex128s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Complex128s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [complex128]}
	 {*ast.Field -> *ast.ArrayType [complex128]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstC128 dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [complex128]}
	 {*ast.Field [complex128]}
	 {*ast.FieldList -> *ast.Field [complex128]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstC128 dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [String]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Strings]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Strings]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [string]}
	 {*ast.Field -> *ast.ArrayType [string]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstStr dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [string]}
	 {*ast.Field [string]}
	 {*ast.FieldList -> *ast.Field [string]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstStr dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [UnsafePointer]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data UnsafePointers]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal UnsafePointers]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.Field -> *ast.ArrayType -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceFirstUnsafePointer dt rt split size f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceFirstUnsafePointer dt rt split size f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf]}
	 {*ast.BasicLit [STRING "Unsupported type %v for ReduceFirst"]}
	 { [t]}


function name is ReduceLast 
	 {*ast.FieldList -> *ast.Field [e E ReduceLast]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [t]}
	 {*ast.SelectorExpr [reflect Type]}
	 {*ast.Field [data]}
	 {*ast.StarExpr -> *ast.SelectorExpr [storage Header]}
	 {*ast.Field [retVal]}
	 {*ast.StarExpr -> *ast.SelectorExpr [storage Header]}
	 {*ast.Field [dimSize int]}
	 {*ast.Field [defaultValue]}
	 {*ast.InterfaceType []}
	 {*ast.FieldList -> *ast.Field [fn]}
	 {*ast.InterfaceType []}
	 {*ast.FieldList -> *ast.FieldList -> *ast.Field [err error]}
	 {*ast.BlockStmt -> *ast.GenDecl -> *ast.ValueSpec [ok bool]}
	 {*ast.SwitchStmt [t]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause [Bool]}
	 {*ast.GenDecl -> *ast.ValueSpec [def bool]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue bool]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Bools]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Bools]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [bool]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastB dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [bool]}
	 {*ast.Field [bool]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastB dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Ints]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Ints]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int]}
	 {*ast.FieldList -> *ast.Field [int]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastI dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int]}
	 {*ast.Field [int]}
	 {*ast.FieldList -> *ast.Field [int]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastI dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int8]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int8]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int8]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int8s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int8s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int8]}
	 {*ast.FieldList -> *ast.Field [int8]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastI8 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int8]}
	 {*ast.Field [int8]}
	 {*ast.FieldList -> *ast.Field [int8]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastI8 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int16]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int16]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int16]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int16s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int16s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int16]}
	 {*ast.FieldList -> *ast.Field [int16]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastI16 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int16]}
	 {*ast.Field [int16]}
	 {*ast.FieldList -> *ast.Field [int16]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastI16 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int32]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int32]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int32s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int32s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int32]}
	 {*ast.FieldList -> *ast.Field [int32]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastI32 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int32]}
	 {*ast.Field [int32]}
	 {*ast.FieldList -> *ast.Field [int32]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastI32 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int64]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int64s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [int64]}
	 {*ast.FieldList -> *ast.Field [int64]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastI64 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [int64]}
	 {*ast.Field [int64]}
	 {*ast.FieldList -> *ast.Field [int64]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastI64 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uints]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uints]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint]}
	 {*ast.FieldList -> *ast.Field [uint]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastU dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint]}
	 {*ast.Field [uint]}
	 {*ast.FieldList -> *ast.Field [uint]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastU dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint8]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint8]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint8]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint8s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint8s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint8]}
	 {*ast.FieldList -> *ast.Field [uint8]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastU8 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint8]}
	 {*ast.Field [uint8]}
	 {*ast.FieldList -> *ast.Field [uint8]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastU8 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint16]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint16]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint16]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint16s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint16s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint16]}
	 {*ast.FieldList -> *ast.Field [uint16]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastU16 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint16]}
	 {*ast.Field [uint16]}
	 {*ast.FieldList -> *ast.Field [uint16]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastU16 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint32]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint32]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint32s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint32s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint32]}
	 {*ast.FieldList -> *ast.Field [uint32]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastU32 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint32]}
	 {*ast.Field [uint32]}
	 {*ast.FieldList -> *ast.Field [uint32]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastU32 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint64]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint64s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uint64]}
	 {*ast.FieldList -> *ast.Field [uint64]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastU64 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uint64]}
	 {*ast.Field [uint64]}
	 {*ast.FieldList -> *ast.Field [uint64]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastU64 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uintptr]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uintptr]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uintptr]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uintptrs]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uintptrs]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [uintptr]}
	 {*ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastUintptr dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.Field [uintptr]}
	 {*ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastUintptr dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Float32]}
	 {*ast.GenDecl -> *ast.ValueSpec [def float32]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue float32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Float32s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Float32s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [float32]}
	 {*ast.FieldList -> *ast.Field [float32]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastF32 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [float32]}
	 {*ast.Field [float32]}
	 {*ast.FieldList -> *ast.Field [float32]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastF32 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Float64]}
	 {*ast.GenDecl -> *ast.ValueSpec [def float64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue float64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Float64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Float64s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [float64]}
	 {*ast.FieldList -> *ast.Field [float64]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastF64 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [float64]}
	 {*ast.Field [float64]}
	 {*ast.FieldList -> *ast.Field [float64]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastF64 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Complex64]}
	 {*ast.GenDecl -> *ast.ValueSpec [def complex64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue complex64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Complex64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Complex64s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [complex64]}
	 {*ast.FieldList -> *ast.Field [complex64]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastC64 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [complex64]}
	 {*ast.Field [complex64]}
	 {*ast.FieldList -> *ast.Field [complex64]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastC64 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Complex128]}
	 {*ast.GenDecl -> *ast.ValueSpec [def complex128]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue complex128]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Complex128s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Complex128s]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [complex128]}
	 {*ast.FieldList -> *ast.Field [complex128]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastC128 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [complex128]}
	 {*ast.Field [complex128]}
	 {*ast.FieldList -> *ast.Field [complex128]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastC128 dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [String]}
	 {*ast.GenDecl -> *ast.ValueSpec [def string]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue string]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Strings]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Strings]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType [string]}
	 {*ast.FieldList -> *ast.Field [string]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastStr dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field [string]}
	 {*ast.Field [string]}
	 {*ast.FieldList -> *ast.Field [string]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastStr dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [UnsafePointer]}
	 {*ast.GenDecl -> *ast.ValueSpec -> *ast.SelectorExpr [def unsafe Pointer]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr -> *ast.SelectorExpr [defaultValue unsafe Pointer]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data UnsafePointers]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal UnsafePointers]}
	 {*ast.TypeSwitchStmt -> *ast.AssignStmt [:= f]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.ArrayType -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceLastUnsafePointer dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.ExprStmt -> *ast.CallExpr [genericReduceLastUnsafePointer dt rt dimSize def f]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf]}
	 {*ast.BasicLit [STRING "Unsupported type %v for ReduceLast"]}
	 { [t]}


function name is ReduceDefault 
	 {*ast.FieldList -> *ast.Field [e E ReduceDefault]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [t]}
	 {*ast.SelectorExpr [reflect Type]}
	 {*ast.Field [data]}
	 {*ast.StarExpr -> *ast.SelectorExpr [storage Header]}
	 {*ast.Field [retVal]}
	 {*ast.StarExpr -> *ast.SelectorExpr [storage Header]}
	 {*ast.Field [dim0 int]}
	 {*ast.Field [dimSize int]}
	 {*ast.Field [outerStride int]}
	 {*ast.Field [stride int]}
	 {*ast.Field [expected int]}
	 {*ast.Field [fn]}
	 {*ast.InterfaceType []}
	 {*ast.FieldList -> *ast.FieldList -> *ast.Field [err error]}
	 {*ast.BlockStmt -> *ast.GenDecl -> *ast.ValueSpec [ok bool]}
	 {*ast.SwitchStmt [t]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause [Bool]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [bool]}
	 {*ast.Field [bool]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [bool]}
	 {*ast.Field [bool]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Bools]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Bools]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultB dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int]}
	 {*ast.Field [int]}
	 {*ast.FieldList -> *ast.Field [int]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int]}
	 {*ast.Field [int]}
	 {*ast.FieldList -> *ast.Field [int]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Ints]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Ints]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultI dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int8]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int8]}
	 {*ast.Field [int8]}
	 {*ast.FieldList -> *ast.Field [int8]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int8]}
	 {*ast.Field [int8]}
	 {*ast.FieldList -> *ast.Field [int8]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int8s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int8s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultI8 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int16]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int16]}
	 {*ast.Field [int16]}
	 {*ast.FieldList -> *ast.Field [int16]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int16]}
	 {*ast.Field [int16]}
	 {*ast.FieldList -> *ast.Field [int16]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int16s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int16s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultI16 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int32]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int32]}
	 {*ast.Field [int32]}
	 {*ast.FieldList -> *ast.Field [int32]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int32]}
	 {*ast.Field [int32]}
	 {*ast.FieldList -> *ast.Field [int32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int32s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int32s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultI32 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Int64]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int64]}
	 {*ast.Field [int64]}
	 {*ast.FieldList -> *ast.Field [int64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int64]}
	 {*ast.Field [int64]}
	 {*ast.FieldList -> *ast.Field [int64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Int64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Int64s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultI64 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint]}
	 {*ast.Field [uint]}
	 {*ast.FieldList -> *ast.Field [uint]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint]}
	 {*ast.Field [uint]}
	 {*ast.FieldList -> *ast.Field [uint]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uints]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uints]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultU dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint8]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint8]}
	 {*ast.Field [uint8]}
	 {*ast.FieldList -> *ast.Field [uint8]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint8]}
	 {*ast.Field [uint8]}
	 {*ast.FieldList -> *ast.Field [uint8]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint8s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint8s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultU8 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint16]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint16]}
	 {*ast.Field [uint16]}
	 {*ast.FieldList -> *ast.Field [uint16]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint16]}
	 {*ast.Field [uint16]}
	 {*ast.FieldList -> *ast.Field [uint16]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint16s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint16s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultU16 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint32]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint32]}
	 {*ast.Field [uint32]}
	 {*ast.FieldList -> *ast.Field [uint32]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint32]}
	 {*ast.Field [uint32]}
	 {*ast.FieldList -> *ast.Field [uint32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint32s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint32s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultU32 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uint64]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint64]}
	 {*ast.Field [uint64]}
	 {*ast.FieldList -> *ast.Field [uint64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint64]}
	 {*ast.Field [uint64]}
	 {*ast.FieldList -> *ast.Field [uint64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uint64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uint64s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultU64 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Uintptr]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.Field [uintptr]}
	 {*ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.Field [uintptr]}
	 {*ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Uintptrs]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Uintptrs]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultUintptr dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Float32]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [float32]}
	 {*ast.Field [float32]}
	 {*ast.FieldList -> *ast.Field [float32]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [float32]}
	 {*ast.Field [float32]}
	 {*ast.FieldList -> *ast.Field [float32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Float32s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Float32s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultF32 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Float64]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [float64]}
	 {*ast.Field [float64]}
	 {*ast.FieldList -> *ast.Field [float64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [float64]}
	 {*ast.Field [float64]}
	 {*ast.FieldList -> *ast.Field [float64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Float64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Float64s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultF64 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Complex64]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [complex64]}
	 {*ast.Field [complex64]}
	 {*ast.FieldList -> *ast.Field [complex64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [complex64]}
	 {*ast.Field [complex64]}
	 {*ast.FieldList -> *ast.Field [complex64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Complex64s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Complex64s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultC64 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [Complex128]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [complex128]}
	 {*ast.Field [complex128]}
	 {*ast.FieldList -> *ast.Field [complex128]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [complex128]}
	 {*ast.Field [complex128]}
	 {*ast.FieldList -> *ast.Field [complex128]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Complex128s]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Complex128s]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultC128 dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [String]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [string]}
	 {*ast.Field [string]}
	 {*ast.FieldList -> *ast.Field [string]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [string]}
	 {*ast.Field [string]}
	 {*ast.FieldList -> *ast.Field [string]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data Strings]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal Strings]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultStr dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause [UnsafePointer]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.AssignStmt [:= dt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [data UnsafePointers]}
	 {*ast.AssignStmt [:= rt]}
	 {*ast.CallExpr -> *ast.SelectorExpr [retVal UnsafePointers]}
	 {*ast.ExprStmt -> *ast.CallExpr [reduceDefaultUnsafePointer dt rt dim0 dimSize outerStride stride expected f]}
	 {*ast.ReturnStmt [nil]}
	 {*ast.CaseClause -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr [errors Errorf]}
	 {*ast.BasicLit [STRING "Unsupported type %v for ReduceDefault"]}
	 { [t]}


function name is Reduce 
	 {*ast.FieldList -> *ast.Field [e E Reduce]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [t]}
	 {*ast.SelectorExpr [reflect Type]}
	 {*ast.Field [a]}
	 {*ast.StarExpr -> *ast.SelectorExpr [storage Header]}
	 {*ast.Field [defaultValue]}
	 {*ast.InterfaceType []}
	 {*ast.FieldList -> *ast.Field [fn]}
	 {*ast.InterfaceType []}
	 {*ast.FieldList -> *ast.FieldList -> *ast.Field [retVal]}
	 {*ast.InterfaceType []}
	 {*ast.FieldList -> *ast.Field [err error]}
	 {*ast.BlockStmt -> *ast.GenDecl -> *ast.ValueSpec [ok bool]}
	 {*ast.SwitchStmt [t]}
	 {*ast.BlockStmt []}
	 {*ast.CaseClause [Bool]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [bool]}
	 {*ast.Field [bool]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.GenDecl -> *ast.ValueSpec [def bool]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [bool]}
	 {*ast.Field [bool]}
	 {*ast.FieldList -> *ast.Field [bool]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue bool]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceB f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Bools]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Int]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int]}
	 {*ast.Field [int]}
	 {*ast.FieldList -> *ast.Field [int]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int]}
	 {*ast.Field [int]}
	 {*ast.FieldList -> *ast.Field [int]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceI f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Ints]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Int8]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int8]}
	 {*ast.Field [int8]}
	 {*ast.FieldList -> *ast.Field [int8]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int8]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int8]}
	 {*ast.Field [int8]}
	 {*ast.FieldList -> *ast.Field [int8]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int8]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceI8 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Int8s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Int16]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int16]}
	 {*ast.Field [int16]}
	 {*ast.FieldList -> *ast.Field [int16]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int16]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int16]}
	 {*ast.Field [int16]}
	 {*ast.FieldList -> *ast.Field [int16]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int16]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceI16 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Int16s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Int32]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int32]}
	 {*ast.Field [int32]}
	 {*ast.FieldList -> *ast.Field [int32]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int32]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int32]}
	 {*ast.Field [int32]}
	 {*ast.FieldList -> *ast.Field [int32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceI32 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Int32s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Int64]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int64]}
	 {*ast.Field [int64]}
	 {*ast.FieldList -> *ast.Field [int64]}
	 {*ast.GenDecl -> *ast.ValueSpec [def int64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [int64]}
	 {*ast.Field [int64]}
	 {*ast.FieldList -> *ast.Field [int64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue int64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceI64 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Int64s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Uint]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint]}
	 {*ast.Field [uint]}
	 {*ast.FieldList -> *ast.Field [uint]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint]}
	 {*ast.Field [uint]}
	 {*ast.FieldList -> *ast.Field [uint]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceU f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Uints]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Uint8]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint8]}
	 {*ast.Field [uint8]}
	 {*ast.FieldList -> *ast.Field [uint8]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint8]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint8]}
	 {*ast.Field [uint8]}
	 {*ast.FieldList -> *ast.Field [uint8]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint8]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceU8 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Uint8s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Uint16]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint16]}
	 {*ast.Field [uint16]}
	 {*ast.FieldList -> *ast.Field [uint16]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint16]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint16]}
	 {*ast.Field [uint16]}
	 {*ast.FieldList -> *ast.Field [uint16]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint16]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceU16 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Uint16s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Uint32]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint32]}
	 {*ast.Field [uint32]}
	 {*ast.FieldList -> *ast.Field [uint32]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint32]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint32]}
	 {*ast.Field [uint32]}
	 {*ast.FieldList -> *ast.Field [uint32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceU32 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Uint32s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Uint64]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint64]}
	 {*ast.Field [uint64]}
	 {*ast.FieldList -> *ast.Field [uint64]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uint64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uint64]}
	 {*ast.Field [uint64]}
	 {*ast.FieldList -> *ast.Field [uint64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uint64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceU64 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Uint64s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Uintptr]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.Field [uintptr]}
	 {*ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.GenDecl -> *ast.ValueSpec [def uintptr]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.Field [uintptr]}
	 {*ast.FieldList -> *ast.Field [uintptr]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue uintptr]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceUintptr f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Uintptrs]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Float32]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [float32]}
	 {*ast.Field [float32]}
	 {*ast.FieldList -> *ast.Field [float32]}
	 {*ast.GenDecl -> *ast.ValueSpec [def float32]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [float32]}
	 {*ast.Field [float32]}
	 {*ast.FieldList -> *ast.Field [float32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue float32]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceF32 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Float32s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Float64]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [float64]}
	 {*ast.Field [float64]}
	 {*ast.FieldList -> *ast.Field [float64]}
	 {*ast.GenDecl -> *ast.ValueSpec [def float64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [float64]}
	 {*ast.Field [float64]}
	 {*ast.FieldList -> *ast.Field [float64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue float64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceF64 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Float64s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Complex64]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [complex64]}
	 {*ast.Field [complex64]}
	 {*ast.FieldList -> *ast.Field [complex64]}
	 {*ast.GenDecl -> *ast.ValueSpec [def complex64]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [complex64]}
	 {*ast.Field [complex64]}
	 {*ast.FieldList -> *ast.Field [complex64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue complex64]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceC64 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Complex64s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [Complex128]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [complex128]}
	 {*ast.Field [complex128]}
	 {*ast.FieldList -> *ast.Field [complex128]}
	 {*ast.GenDecl -> *ast.ValueSpec [def complex128]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [complex128]}
	 {*ast.Field [complex128]}
	 {*ast.FieldList -> *ast.Field [complex128]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue complex128]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceC128 f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Complex128s]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [String]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [string]}
	 {*ast.Field [string]}
	 {*ast.FieldList -> *ast.Field [string]}
	 {*ast.GenDecl -> *ast.ValueSpec [def string]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field [string]}
	 {*ast.Field [string]}
	 {*ast.FieldList -> *ast.Field [string]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr [defaultValue string]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceStr f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a Strings]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause [UnsafePointer]}
	 {*ast.GenDecl -> *ast.ValueSpec [f]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.GenDecl -> *ast.ValueSpec -> *ast.SelectorExpr [def unsafe Pointer]}
	 {*ast.IfStmt -> *ast.AssignStmt [= f ok]}
	 {*ast.TypeAssertExpr [fn]}
	 {*ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.FieldList -> *ast.Field -> *ast.SelectorExpr [unsafe Pointer]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf reductionErrMsg fn]}
	 {*ast.IfStmt -> *ast.AssignStmt [= def ok]}
	 {*ast.TypeAssertExpr -> *ast.SelectorExpr [defaultValue unsafe Pointer]}
	 {*ast.UnaryExpr [! ok]}
	 {*ast.BlockStmt -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf defaultValueErrMsg def defaultValue defaultValue]}
	 {*ast.AssignStmt [= retVal]}
	 {*ast.CallExpr [ReduceUnsafePointer f def]}
	 {*ast.CallExpr -> *ast.SelectorExpr [a UnsafePointers]}
	 {*ast.ReturnStmt []}
	 {*ast.CaseClause -> *ast.ReturnStmt [nil]}
	 {*ast.CallExpr -> *ast.SelectorExpr [errors Errorf]}
	 {*ast.BasicLit [STRING "Unsupported type %v for Reduce"]}
	 { [t]}


