func (r *Reader) ReadObject() Object {
	c, err := r.ReadByte()
	if err != nil {
		log.Fatal(err)
	}
	if *debug {
		fmt.Printf("\x1b[34;1m%c\x1b[0m", c&0x7f)
	}
	if c == TYPE_OBREF {
		var index int32
		binary.Read(r, binary.LittleEndian, &index)
		if *debug {
			fmt.Printf("%d", index)
		}
		return *r.module.References[index-1]
	}
	o := r.createObject(c & 0x7f)
	if c&0x80 != 0 {
		r.module.References = append(r.module.References, &o)
	}
	return o
}
ReadObject reads the next available object from the unterlying
reader.
package main
import (
	"bufio"
	"container/list"
	"encoding/binary"
	"fmt"
	"log"
)
type Reader struct {
	bufio.Reader
	module *Module
}