code: func (t *transformer) transformGoFile(filename string) error {
  	t.fset = token.NewFileSet()
  	file, err := parser.ParseFile(t.fset, filename, nil, parser.ParseComments)
  	if err != nil {
  		return err
  	}
  
  	t.PackageName = file.Name.Name
  	t.services, err = getServices(file)
  	if err != nil {
  		return err
  	}
  	if len(t.services) == 0 {
  		return nil
  	}
  
  	t.inPRPCPackage, err = isInPackage(filename, prpcPackagePath)
  	if err != nil {
  		return err
  	}
  
  	if err := t.transformFile(file); err != nil {
  		return err
  	}
  
  	var buf bytes.Buffer
  	if err := printer.Fprint(&buf, t.fset, file); err != nil {
  		return err
  	}
  	formatted, err := gofmt(buf.Bytes())
  	if err != nil {
  		return err
  	}
  
  	return ioutil.WriteFile(filename, formatted, 0666)
  }
docs: // transformGoFile rewrites a .go file to work with prpc.