 "use strict"
 
-# pull in external modules
-_ = require '../vendor/_.js'
 util = require './util'
 opcodes = require './opcodes'
 attributes = require './attributes'

      else
        # micro-optimization for registerNatives and initIDs, don't even bother making a function
        @code = null
    else
      @has_bytecode = true
      @code = _.find(@attrs, (a) -> a.name == 'Code')

  reflector: (rs, is_constructor=false, success_fn, failure_fn) ->
    typestr = if is_constructor then 'Ljava/lang/reflect/Constructor;' else 'Ljava/lang/reflect/Method;'
    exceptions = _.find(@attrs, (a) -> a.name == 'Exceptions')?.exceptions ? []
    anns = _.find(@attrs, (a) -> a.name == 'RuntimeVisibleAnnotations')?.raw_bytes
    adefs = _.find(@attrs, (a) -> a.name == 'AnnotationDefault')?.raw_bytes
    sig =  _.find(@attrs, (a) -> a.name == 'Signature')?.sig
    obj = {}

    clazz_obj = @cls.get_class_object(rs)

  reflector: (rs, success_fn, failure_fn) ->
    # note: sig is the generic type parameter (if one exists), not the full
    # field type.
    sig = @get_attribute("Signature")?.sig

    create_obj = (clazz_obj, type_obj) =>
      new JavaObject rs, rs.get_bs_class('Ljava/lang/reflect/Field;'), {
