class BinData::SanitizedPrototype

def has_parameter?(param)

def has_parameter?(param)
  if defined? @factory
    @factory.has_parameter?(param)
  else
    @obj_params.has_parameter?(param)
  end
end

def initialize(obj_type, obj_params, hints)

def initialize(obj_type, obj_params, hints)
  raw_hints = hints.dup
  if raw_hints[:endian].respond_to?(:endian)
    raw_hints[:endian] = raw_hints[:endian].endian
  end
  obj_params ||= {}
  if BinData::Base === obj_type
    obj_class = obj_type
  else
    obj_class = RegisteredClasses.lookup(obj_type, raw_hints)
  end
  if BinData::Base === obj_class
    @factory = obj_class
  else
    @obj_class  = obj_class
    @obj_params = SanitizedParameters.new(obj_params, @obj_class, hints)
  end
end

def instantiate(value = nil, parent = nil)

def instantiate(value = nil, parent = nil)
  @factory ||= @obj_class.new(@obj_params)
  @factory.new(value, parent)
end