module JsonbAccessor::ClassBuilder

def generate_class(namespace, new_class_name, attribute_definitions)

def generate_class(namespace, new_class_name, attribute_definitions)
  fields_map = JsonbAccessor::FieldsMap.new([], attribute_definitions)
  klass = generate_new_class(new_class_name, fields_map, namespace)
  nested_classes = generate_nested_classes(klass, fields_map.nested_fields)
  define_class_methods(klass, nested_classes, new_class_name)
  define_attributes_and_data_types(klass, fields_map)
  define_typed_accessors(klass, fields_map)
  define_nested_accessors(klass, fields_map)
  klass
end