   # All class attributes should not be modified (e.g. by a running program)
   # once it has been constructed.
   constructor: (bytes_array) ->
-    @ml_cache = []
-    @fl_cache = []
+    @ml_cache = {}
+    @fl_cache = {}
     bytes_array = new util.BytesArray bytes_array
     throw "Magic number invalid" if (bytes_array.get_uint 4) != 0xCAFEBABE
     @minor_version = bytes_array.get_uint 2

      if field.name is field_spec.name
        return field

    ifaces = (c2t(@constant_pool.get(i).deref()) for i in @interfaces)
    for ifc in ifaces
      ifc_cls = rs.class_lookup ifc
      field = ifc_cls.field_lookup(rs, field_spec)
      return field if field?


      sc = rs.class_lookup @super_class
      field = sc.field_lookup(rs, field_spec)
      return field if field?
    return null

  # Spec [5.4.3.3][1], [5.4.3.4][2].
  # [1]: http://docs.oracle.com/javase/specs/jvms/se5.0/html/ConstantPool.doc.html#79473
