func Transpile(out io.Writer, in io.Reader, debug io.Writer) error {
	fset := token.NewFileSet()
	f, err := parser.ParseFile(fset, "sketch.go", in, 0)
	if err != nil {
		return fmt.Errorf("failed to parse file: %v", err)
	}
	if debug != nil {
		ast.Fprint(debug, fset, f, nil)
	}
	for _, d := range f.Decls {
		if err := handleDecl(out, d); err != nil {
			return fmt.Errorf("error handling decl %#v: %v", d, err)
		}
	}
	return nil
}
Transpile reads Go source code from the given Reader and writes the
transpiled Arduino C++ code to the given Writer.
package transpiler
import (
	"bytes"
	"fmt"
	"go/ast"
	"go/parser"
	"go/token"
	"io"
	"strings"
)