# File lib/type_checker.rb, line 321
  def process_class(exp)
    name = exp.shift
    superclass = exp.shift

    @genv.add name, Type.zclass

    result = t(:class, Type.zclass)
    result << name
    result << superclass
      
    @env.scope do
      # HACK: not sure this is the right place, maybe genv instead?
      klass = eval(name.to_s) # HACK do proper lookup - ugh
      klass.constants.each do |c|
        const_type = case klass.const_get(c)
                     when Fixnum then
                       Type.long
                     when String then
                       Type.str
                     else
                       Type.unknown
                     end
        @env.add c.intern, const_type
      end

      until exp.empty? do
        result << process(exp.shift)
      end
    end

    return result
  end