You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: primitives.rb
    path of file: ./repos/metasploit-framework/lib/msf/util/dot_net_deserialization/types
    
    the code of the file until where you have to start completion: module Msf
module Util
module DotNetDeserialization
module Types
module Primitives

  #
  # .NET Serialization Types (Primitives)
  #
  class Boolean < BinData::Primitive
    int8 :val
    def get
      self.val != 0
    end

    def set(value)
      self.val = value ? 1 : 0
    end
  end

  class DateTime < BinData:
    
      def from_member_values(class_info:, member_type_info:, member_values:, **kwargs)
        raise ::ArgumentError, 'Invalid class_info type' unless class_info.is_a? Types::General::ClassInfo
        raise ::ArgumentError, 'Invalid member_type_info type' unless member_type_info.is_a? Types::General::MemberTypeInfo
        raise ::ArgumentError, 'Invalid member count' unless class_info.member_count == member_values.length

        kwargs[:class_info] = class_info
        kwargs[:member_type_info] = member_type_info
        kwargs[:member_values] = MemberValues.new(
          member_values,
          class_info: class_info,
          member_type_info: member_type_info
        )

        # pass class_info and member_type_info as *both* a value and a parameter
        self.new(kwargs, class_info: class_info, member_type_info: member_type_info)
      end