code: def get_default_value_by_type(type_, state=None):
          
          if type_ in ['byte', 'char', 'short', 'int', 'boolean']:
              return BVS('default_value_{}'.format(type_), 32)
          elif type_ == "long":
              return BVS('default_value_{}'.format(type_), 64)
          elif type_ == 'float':
              return FPS('default_value_{}'.format(type_), FSORT_FLOAT)
          elif type_ == 'double':
              return FPS('default_value_{}'.format(type_), FSORT_DOUBLE)
          elif state is not None:
              if type_ == 'java.lang.String':
                  return SimSootValue_StringRef.new_string(state, StringS('default_value_{}'.format(type_), 1000))
              if type_.endswith('[][]'):
                  raise NotImplementedError
                  # multiarray = SimSootExpr_NewMultiArray.new_array(self.state, element_type, size)
                  # multiarray.add_default_value_generator(lambda s: SimSootExpr_NewMultiArray._generate_inner_array(s, element_type, sizes))
                  # return  multiarray
              elif type_.endswith('[]'):
                  array = SimSootExpr_NewArray.new_array(state, type_[:-2], BVV(2, 32))
                  return array
              else:
                  return SimSootValue_ThisRef.new_object(state, type_, symbolic=True, init_object=False)
          else:
              # not a primitive type
              # => treat it as a reference
              return SootNullConstant()
docs: Java specify defaults values for primitive and reference types. This
          method returns the default value for a given type.
  
          :param str type_:   Name of type.
          :return:            Default value for this type.