You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: runner.go
    path of file: ./repos/lgo/cmd/runner
    
    the code of the file until where you have to start completion: package runner

import (
	"bytes"
	"context"
	"fmt"
	"go/build"
	"go/scanner"
	"go/token"
	"go/types"
	"io"
	"io/ioutil"
	"os"
	"os/exec"
	"path"
	"strings"
	"unsafe"

	"github.com/yunabe/lgo/cmd/install"
	"github.com/yunabe/lgo/converter"
	"github.com/yunabe/lgo/core"
)

/*
#cgo linux LDFLAGS: -ldl
#include <dlfcn.h>
*/
import "C"

func loadShared(ctx core.LgoContext, buildPkgDir, pkgPath string) error {
	// This code is implemented based on https://golang.org/src/plugin/plugin_dlopen.go
	sofile := "lib" + strings.Replace(pkgPath, "/", "-", -1) + ".so"
	handle := C.dlopen(C.CString(path.Join(buildPkgDir, sofile)), C.RTLD_NOW|C.RTLD_GLOBAL)
	if handle == nil {
		panic("Failed to open shared object.")
	}

	// Initialize freshly loaded modules
	// c.f. plugin_lastmoduleinit in https://golang.org/src/runtime/plugin.go
	modulesinit()
	typelinksinit()
	itabsinit()

	// Don't forget to call init.
	// TODO: Write unit tests to confirm this.
	initFuncPC := C.dlsym(handle, C.CString(pkgPath+".init"))
	if initFuncPC != nil {
		// 
    
func loadShared(ctx core.LgoContext, buildPkgDir, pkgPath string) error {
	// This code is implemented based on https://golang.org/src/plugin/plugin_dlopen.go
	sofile := "lib" + strings.Replace(pkgPath, "/", "-", -1) + ".so"
	handle := C.dlopen(C.CString(path.Join(buildPkgDir, sofile)), C.RTLD_NOW|C.RTLD_GLOBAL)
	if handle == nil {
		panic("Failed to open shared object.")
	}

	// Initialize freshly loaded modules
	// c.f. plugin_lastmoduleinit in https://golang.org/src/runtime/plugin.go
	modulesinit()
	typelinksinit()
	itabsinit()

	// Don't forget to call init.
	// TODO: Write unit tests to confirm this.
	initFuncPC := C.dlsym(handle, C.CString(pkgPath+".init"))
	if initFuncPC != nil {
		// Note: init does not exist if the library does not use external libraries.
		initFuncP := &initFuncPC
		initFunc := *(*func())(unsafe.Pointer(&initFuncP))
		initFunc()
	}

	lgoInitFuncPC := C.dlsym(handle, C.CString(pkgPath+".lgo_init"))
	if lgoInitFuncPC == nil {
		// lgo_init does not exist if lgo source includes only declarations.
		return nil
	}
	lgoInitFuncP := &lgoInitFuncPC
	lgoInitFunc := *(*func())(unsafe.Pointer(&lgoInitFuncP))
	return core.ExecLgoEntryPoint(ctx, func() {
		lgoInitFunc()
	})
}