func printInstruction(i *tp.Instruction, indLvl int) { printIndent("Type -> %v", indLvl, i.GetType()) printIndent("Value -> %v", indLvl, i.GetValue()) printIndent("ObjectId -> %v", indLvl, i.GetObjectId()) printIndent("Function Id -> %v", indLvl, i.GetFunctionId()) printIndent("Line Number -> %v", indLvl, i.GetLineNumber()) printIndent("Yield Type Id -> %v", indLvl, i.GetYieldTypeId()) printIndent("Is Valid -> %v", indLvl, i.GetIsValid()) printIndent("Namespace -> %v", indLvl, i.GetNamespace()) printIndent("Type Qualifier -> %v", indLvl, i.GetTypeQualifier()) //printIndent("Is User Called -> %v", indLvl, i.GetIsUserCalled()) //doesn't have an accessor for some reason printIndent("Children:", indLvl) for ind, item := range i.GetChildren() { printIndent("Child[%d]:", indLvl+1, ind) printInstruction(item, indLvl+2) } printIndent("Arguments:", indLvl) for ind, item := range i.GetArguments() { printIndent("Argument[%d]:", indLvl+1, ind) printInstruction(item, indLvl+2) } }