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: json.go
    path of file: ./repos/goby/vm
    
    the code of the file until where you have to start completion: package vm

import (
	"encoding/json"

	"github.com/goby-lang/goby/vm/classes"
	"github.com/goby-lang/goby/vm/errors"
)

type jsonObj map[string]interface{}

// Class methods --------------------------------------------------------
var builtinJSONClassMethods = []*BuiltinMethodObject{
	{
		Name: "parse",
		Fn: func(receiver Object, sourceLine int, t *Thread, args []Object, blockFrame *normalCallFrame) Object {
			if len(args) != 
    
func (v *VM) convertJSONToHashObj(j jsonObj) Object {
	objectMap := map[string]Object{}

	for key, jsonValue := range j {
		switch jsonValue := jsonValue.(type) {
		// Array of json objects
		case []map[string]interface{}:
			objs := []Object{}

			for _, value := range jsonValue {
				objs = append(objs, v.convertJSONToHashObj(value))
			}

			objectMap[key] = v.InitArrayObject(objs)
		case []interface{}:
			objs := []Object{}

			for _, elem := range jsonValue {
				switch e := elem.(type) {
				case map[string]interface{}:
					objs = append(objs, v.convertJSONToHashObj(e))
				default:
					objs = append(objs, v.InitObjectFromGoType(e))
				}
			}

			objectMap[key] = v.InitArrayObject(objs)
			// Single json object
		case map[string]interface{}:
			objectMap[key] = v.convertJSONToHashObj(jsonValue)
		case float64:
			// TODO: Find a better way to distinguish between Float & Integer because default GO JSON package
			// TODO: support only for parsing float out regardless of integer or float type data of JSON value
			if jsonValue == float64(int(jsonValue)) {
				objectMap[key] = v.InitIntegerObject(int(jsonValue))
			} else {
				objectMap[key] = v.initFloatObject(jsonValue)
			}
		default:
			objectMap[key] = v.InitObjectFromGoType(jsonValue)
		}
	}

	return v.InitHashObject(objectMap)
}