(define-record-type focus-table :focus-table
  (really-make-focus-table table count)
  focus-table?
  (table focus-table-table)
  (count focus-table-count set-focus-table-count!))

(define (make-empty-focus-table)
  (really-make-focus-table (make-integer-table) 0))

(define (add-focus-object focus-table object)
  (let ((count (+ 1 (focus-table-count focus-table))))
    (set-focus-table-count! focus-table count)
    (table-set! 
     (focus-table-table focus-table) count object)
    count))

(define (get-focus-object focus-table index)
  (table-ref (focus-table-table focus-table) index))

(define (make-focus-object-reference table obj)
  (let ((id (add-focus-object table obj)))
    `(focus-value-ref ,id)))