code: func (self *Script) marshalBinary() ([]byte, error) {
  	var bfr bytes.Buffer
  	encoder := gob.NewEncoder(&bfr)
  	err := encoder.Encode(self.version)
  	if err != nil {
  		return nil, err
  	}
  	err = encoder.Encode(self.program)
  	if err != nil {
  		return nil, err
  	}
  	err = encoder.Encode(self.filename)
  	if err != nil {
  		return nil, err
  	}
  	err = encoder.Encode(self.src)
  	if err != nil {
  		return nil, err
  	}
  	return bfr.Bytes(), nil
  }
docs: // MarshalBinary will marshal a script into a binary form. A marshalled script
  // that is later unmarshalled can be executed on the same version of the otto runtime.
  //
  // The binary format can change at any time and should be considered unspecified and opaque.
  //