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: script.go
    path of file: ./repos/hoverfly/vendor/github.com/robertkrimen/otto
    
    the code of the file until where you have to start completion: package otto

import (
	"bytes"
	"encoding/gob"
	"errors"
)

var ErrVersion = errors.New("version mismatch")

var scriptVersion = "2014-04-13/1"

// Script is a handle for some (reusable) JavaScript.
// Passing a Script value to a run method will evaluate the JavaScript.
//
type Script
    
func (self *Script) unmarshalBinary(data []byte) error {
	decoder := gob.NewDecoder(bytes.NewReader(data))
	err := decoder.Decode(&self.version)
	if err != nil {
		goto error
	}
	if self.version != scriptVersion {
		err = ErrVersion
		goto error
	}
	err = decoder.Decode(&self.program)
	if err != nil {
		goto error
	}
	err = decoder.Decode(&self.filename)
	if err != nil {
		goto error
	}
	err = decoder.Decode(&self.src)
	if err != nil {
		goto error
	}
	return nil
error:
	self.version = ""
	self.program = nil
	self.filename = ""
	self.src = ""
	return err
}