class BinData::BaseArgProcessor

need to perform error checking on the parameters.
Any passed parameters are sanitized so the BinData object doesn’t
the form required to initialise the BinData object.
ArgProcessors process the arguments passed to BinData::Base.new into

def extract_args(obj_class, obj_args)

extracts [value, sanitized_parameters, parent].
Takes the arguments passed to BinData::Base.new and
def extract_args(obj_class, obj_args)
  value, params, parent = separate_args(obj_class, obj_args)
  sanitized_params = SanitizedParameters.sanitize(params, obj_class)
  [value, sanitized_params, parent]
end

def sanitize_parameters!(obj_class, obj_params); end

by the data object.
This method converts the parameters to the form expected
Performs sanity checks on the given parameters.
def sanitize_parameters!(obj_class, obj_params); end

def separate_args(_obj_class, obj_args)

[value, parameters, parent]. Called by #extract_args.
Separates the arguments passed to BinData::Base.new into
def separate_args(_obj_class, obj_args)
  args = obj_args.dup
  value = parameters = parent = nil
  if args.length > 1 && args.last.is_a?(BinData::Base)
    parent = args.pop
  end
  if args.length > 0 && args.last.is_a?(Hash)
    parameters = args.pop
  end
  if args.length > 0
    value = args.pop
  end
  parameters ||= @@empty_hash
  [value, parameters, parent]
end