function name: ReduceFirst
   0.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Bool := dt data Bools]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Bools]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   1.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Int := dt data Ints]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Ints]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   2.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Int8 := dt data Int8s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int8s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   3.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Int16 := dt data Int16s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int16s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   4.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Int32 := dt data Int32s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int32s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   5.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Int64 := dt data Int64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int64s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   6.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Uint := dt data Uints]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uints]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   7.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Uint8 := dt data Uint8s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint8s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   8.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Uint16 := dt data Uint16s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint16s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   9.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Uint32 := dt data Uint32s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint32s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   10.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Uint64 := dt data Uint64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint64s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   11.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Uintptr := dt data Uintptrs]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uintptrs]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   12.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Float32 := dt data Float32s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Float32s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   13.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Float64 := dt data Float64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Float64s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   14.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Complex64 := dt data Complex64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Complex64s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   15.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [Complex128 := dt data Complex128s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Complex128s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   16.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [String := dt data Strings]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Strings]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   17.case
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [UnsafePointer := dt data UnsafePointers]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal UnsafePointers]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]

function name: ReduceLast
   0.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Bool def bool]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue bool]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Bools]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Bools]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   1.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Int def int]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Ints]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Ints]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   2.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Int8 def int8]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int8]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Int8s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int8s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   3.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Int16 def int16]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int16]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Int16s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int16s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   4.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Int32 def int32]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int32]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Int32s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int32s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   5.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Int64 def int64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Int64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int64s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   6.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Uint def uint]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uints]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uints]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   7.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Uint8 def uint8]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint8]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uint8s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint8s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   8.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Uint16 def uint16]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint16]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uint16s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint16s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   9.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Uint32 def uint32]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint32]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uint32s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint32s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   10.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Uint64 def uint64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uint64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint64s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   11.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Uintptr def uintptr]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uintptr]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uintptrs]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uintptrs]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   12.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Float32 def float32]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue float32]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Float32s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Float32s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   13.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Float64 def float64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue float64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Float64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Float64s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   14.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Complex64 def complex64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue complex64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Complex64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Complex64s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   15.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [Complex128 def complex128]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue complex128]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Complex128s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Complex128s]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   16.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [String def string]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue string]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Strings]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Strings]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]
   17.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.SelectorExpr 	 [UnsafePointer def unsafe Pointer]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.SelectorExpr 	 [= def ok defaultValue unsafe Pointer]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data UnsafePointers]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal UnsafePointers]
     *ast.TypeSwitchStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [:= f 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 	 [default errors Errorf]
      	 [reductionErrMsg fn]
     *ast.ReturnStmt 	 [nil]

function name: ReduceDefault
   0.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Bool f bool]
     *ast.Field 	 [bool]
     *ast.FieldList -> *ast.Field 	 [bool]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Bools]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Bools]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultB dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   1.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int f int]
     *ast.Field 	 [int]
     *ast.FieldList -> *ast.Field 	 [int]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Ints]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Ints]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultI dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   2.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int8 f int8]
     *ast.Field 	 [int8]
     *ast.FieldList -> *ast.Field 	 [int8]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Int8s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int8s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultI8 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   3.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int16 f int16]
     *ast.Field 	 [int16]
     *ast.FieldList -> *ast.Field 	 [int16]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Int16s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int16s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultI16 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   4.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int32 f int32]
     *ast.Field 	 [int32]
     *ast.FieldList -> *ast.Field 	 [int32]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Int32s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int32s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultI32 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   5.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int64 f int64]
     *ast.Field 	 [int64]
     *ast.FieldList -> *ast.Field 	 [int64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Int64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Int64s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultI64 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   6.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint f uint]
     *ast.Field 	 [uint]
     *ast.FieldList -> *ast.Field 	 [uint]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uints]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uints]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultU dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   7.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint8 f uint8]
     *ast.Field 	 [uint8]
     *ast.FieldList -> *ast.Field 	 [uint8]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uint8s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint8s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultU8 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   8.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint16 f uint16]
     *ast.Field 	 [uint16]
     *ast.FieldList -> *ast.Field 	 [uint16]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uint16s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint16s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultU16 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   9.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint32 f uint32]
     *ast.Field 	 [uint32]
     *ast.FieldList -> *ast.Field 	 [uint32]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uint32s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint32s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultU32 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   10.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint64 f uint64]
     *ast.Field 	 [uint64]
     *ast.FieldList -> *ast.Field 	 [uint64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uint64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uint64s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultU64 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   11.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uintptr f uintptr]
     *ast.Field 	 [uintptr]
     *ast.FieldList -> *ast.Field 	 [uintptr]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Uintptrs]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Uintptrs]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultUintptr dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   12.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Float32 f float32]
     *ast.Field 	 [float32]
     *ast.FieldList -> *ast.Field 	 [float32]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Float32s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Float32s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultF32 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   13.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Float64 f float64]
     *ast.Field 	 [float64]
     *ast.FieldList -> *ast.Field 	 [float64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Float64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Float64s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultF64 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   14.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Complex64 f complex64]
     *ast.Field 	 [complex64]
     *ast.FieldList -> *ast.Field 	 [complex64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Complex64s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Complex64s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultC64 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   15.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Complex128 f complex128]
     *ast.Field 	 [complex128]
     *ast.FieldList -> *ast.Field 	 [complex128]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Complex128s]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Complex128s]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultC128 dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   16.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [String f string]
     *ast.Field 	 [string]
     *ast.FieldList -> *ast.Field 	 [string]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data Strings]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal Strings]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultStr dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]
   17.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr 	 [UnsafePointer f unsafe Pointer]
     *ast.Field -> *ast.SelectorExpr 	 [unsafe Pointer]
     *ast.FieldList -> *ast.Field -> *ast.SelectorExpr 	 [unsafe Pointer]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr 	 [= f ok fn 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 -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= dt data UnsafePointers]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [:= rt retVal UnsafePointers]
     *ast.ExprStmt -> *ast.CallExpr 	 [reduceDefaultUnsafePointer dt rt dim0 dimSize outerStride stride expected f]
     *ast.ReturnStmt 	 [nil]

function name: Reduce
   0.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Bool f bool]
     *ast.Field 	 [bool]
     *ast.FieldList -> *ast.Field 	 [bool]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def bool]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn bool]
     *ast.Field 	 [bool]
     *ast.FieldList -> *ast.Field 	 [bool]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue bool]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceB f def a Bools]
     *ast.ReturnStmt 	 []
   1.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int f int]
     *ast.Field 	 [int]
     *ast.FieldList -> *ast.Field 	 [int]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def int]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn int]
     *ast.Field 	 [int]
     *ast.FieldList -> *ast.Field 	 [int]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceI f def a Ints]
     *ast.ReturnStmt 	 []
   2.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int8 f int8]
     *ast.Field 	 [int8]
     *ast.FieldList -> *ast.Field 	 [int8]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def int8]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn int8]
     *ast.Field 	 [int8]
     *ast.FieldList -> *ast.Field 	 [int8]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int8]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceI8 f def a Int8s]
     *ast.ReturnStmt 	 []
   3.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int16 f int16]
     *ast.Field 	 [int16]
     *ast.FieldList -> *ast.Field 	 [int16]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def int16]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn int16]
     *ast.Field 	 [int16]
     *ast.FieldList -> *ast.Field 	 [int16]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int16]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceI16 f def a Int16s]
     *ast.ReturnStmt 	 []
   4.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int32 f int32]
     *ast.Field 	 [int32]
     *ast.FieldList -> *ast.Field 	 [int32]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def int32]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn int32]
     *ast.Field 	 [int32]
     *ast.FieldList -> *ast.Field 	 [int32]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int32]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceI32 f def a Int32s]
     *ast.ReturnStmt 	 []
   5.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Int64 f int64]
     *ast.Field 	 [int64]
     *ast.FieldList -> *ast.Field 	 [int64]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def int64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn int64]
     *ast.Field 	 [int64]
     *ast.FieldList -> *ast.Field 	 [int64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue int64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceI64 f def a Int64s]
     *ast.ReturnStmt 	 []
   6.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint f uint]
     *ast.Field 	 [uint]
     *ast.FieldList -> *ast.Field 	 [uint]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def uint]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn uint]
     *ast.Field 	 [uint]
     *ast.FieldList -> *ast.Field 	 [uint]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceU f def a Uints]
     *ast.ReturnStmt 	 []
   7.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint8 f uint8]
     *ast.Field 	 [uint8]
     *ast.FieldList -> *ast.Field 	 [uint8]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def uint8]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn uint8]
     *ast.Field 	 [uint8]
     *ast.FieldList -> *ast.Field 	 [uint8]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint8]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceU8 f def a Uint8s]
     *ast.ReturnStmt 	 []
   8.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint16 f uint16]
     *ast.Field 	 [uint16]
     *ast.FieldList -> *ast.Field 	 [uint16]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def uint16]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn uint16]
     *ast.Field 	 [uint16]
     *ast.FieldList -> *ast.Field 	 [uint16]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint16]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceU16 f def a Uint16s]
     *ast.ReturnStmt 	 []
   9.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint32 f uint32]
     *ast.Field 	 [uint32]
     *ast.FieldList -> *ast.Field 	 [uint32]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def uint32]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn uint32]
     *ast.Field 	 [uint32]
     *ast.FieldList -> *ast.Field 	 [uint32]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint32]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceU32 f def a Uint32s]
     *ast.ReturnStmt 	 []
   10.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uint64 f uint64]
     *ast.Field 	 [uint64]
     *ast.FieldList -> *ast.Field 	 [uint64]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def uint64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn uint64]
     *ast.Field 	 [uint64]
     *ast.FieldList -> *ast.Field 	 [uint64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uint64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceU64 f def a Uint64s]
     *ast.ReturnStmt 	 []
   11.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Uintptr f uintptr]
     *ast.Field 	 [uintptr]
     *ast.FieldList -> *ast.Field 	 [uintptr]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def uintptr]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn uintptr]
     *ast.Field 	 [uintptr]
     *ast.FieldList -> *ast.Field 	 [uintptr]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue uintptr]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceUintptr f def a Uintptrs]
     *ast.ReturnStmt 	 []
   12.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Float32 f float32]
     *ast.Field 	 [float32]
     *ast.FieldList -> *ast.Field 	 [float32]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def float32]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn float32]
     *ast.Field 	 [float32]
     *ast.FieldList -> *ast.Field 	 [float32]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue float32]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceF32 f def a Float32s]
     *ast.ReturnStmt 	 []
   13.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Float64 f float64]
     *ast.Field 	 [float64]
     *ast.FieldList -> *ast.Field 	 [float64]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def float64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn float64]
     *ast.Field 	 [float64]
     *ast.FieldList -> *ast.Field 	 [float64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue float64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceF64 f def a Float64s]
     *ast.ReturnStmt 	 []
   14.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Complex64 f complex64]
     *ast.Field 	 [complex64]
     *ast.FieldList -> *ast.Field 	 [complex64]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def complex64]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn complex64]
     *ast.Field 	 [complex64]
     *ast.FieldList -> *ast.Field 	 [complex64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue complex64]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceC64 f def a Complex64s]
     *ast.ReturnStmt 	 []
   15.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [Complex128 f complex128]
     *ast.Field 	 [complex128]
     *ast.FieldList -> *ast.Field 	 [complex128]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def complex128]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn complex128]
     *ast.Field 	 [complex128]
     *ast.FieldList -> *ast.Field 	 [complex128]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue complex128]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceC128 f def a Complex128s]
     *ast.ReturnStmt 	 []
   16.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [String f string]
     *ast.Field 	 [string]
     *ast.FieldList -> *ast.Field 	 [string]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec 	 [def string]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field 	 [= f ok fn string]
     *ast.Field 	 [string]
     *ast.FieldList -> *ast.Field 	 [string]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr 	 [= def ok defaultValue string]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceStr f def a Strings]
     *ast.ReturnStmt 	 []
   17.case
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr 	 [UnsafePointer f unsafe Pointer]
     *ast.Field -> *ast.SelectorExpr 	 [unsafe Pointer]
     *ast.FieldList -> *ast.Field -> *ast.SelectorExpr 	 [unsafe Pointer]
     *ast.DeclStmt -> *ast.GenDecl -> *ast.ValueSpec -> *ast.SelectorExpr 	 [def unsafe Pointer]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.FuncType -> *ast.FieldList -> *ast.Field -> *ast.SelectorExpr 	 [= f ok fn 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 	 [nil errors Errorf]
      	 [reductionErrMsg fn]
     *ast.IfStmt -> *ast.AssignStmt -> *ast.TypeAssertExpr -> *ast.SelectorExpr 	 [= def ok defaultValue unsafe Pointer]
     *ast.UnaryExpr 	 [! ok]
     *ast.BlockStmt -> *ast.ReturnStmt -> *ast.CallExpr -> *ast.SelectorExpr 	 [nil errors Errorf]
      	 [defaultValueErrMsg def defaultValue defaultValue]
     *ast.AssignStmt -> *ast.CallExpr -> *ast.CallExpr -> *ast.SelectorExpr 	 [= retVal ReduceUnsafePointer f def a UnsafePointers]
     *ast.ReturnStmt 	 []

