 
   get_type: -> @this_class
   get_super_class_type: -> @super_class
-  get_interface_types: -> @constant_pool.get(i).deref() for i in @interfaces
+  get_interface_types: -> @interfaces
   get_super_class: -> @super_class_cdata
   get_interfaces: -> @interface_cdatas
   get_class_object: (rs) ->

    @super_class = @constant_pool.get(super_ref).deref() unless super_ref is 0
    # direct interfaces of this class
    isize = bytes_array.get_uint 2
    @interfaces = (bytes_array.get_uint 2 for i in [0...isize] by 1)
    # fields of this class
    num_fields = bytes_array.get_uint 2
    @fields = (new methods.Field(@) for i in [0...num_fields] by 1)


# Represents a single Class in the JVM.
class ClassData
  # Responsible for setting up all of the fields that are guaranteed to be
  # present on any ClassData object.
  constructor: (@loader=null) ->
    @ml_cache = {}
    @fl_cache = {}
    @access_flags = {}
    @interfaces = []
    @fields = []
    @methods = {}
    @attrs = []
    @initialized = false
    @static_fields = []

  # Resets any ClassData state that may have been built up
  load: () ->
