require'power_assert/configuration'ifdefined?(RubyVM)ifPowerAssert.configuration._redefinitionmodulePowerAssert# set redefined flagbasic_classes=[Integer,Float,String,Array,Hash,Symbol,Time,Regexp,NilClass,TrueClass,FalseClass]verbose=$VERBOSEbegin$VERBOSE=nil[:Fixnum,:Bignum].eachdo|c|ifObject.const_defined?(c)and(c=Object.const_get(c))!=Integerbasic_classes<<cendendensure$VERBOSE=verboseendbasic_operators=[:+,:-,:*,:/,:%,:==,:===,:<,:<=,:<<,:[],:[]=,:length,:size,:empty?,:nil?,:succ,:>,:>=,:!,:!=,:=~,:freeze,:-@,:max,:min,# :call (it is just used for block call optimization):&,:|,# :default (no specialized instruction for this):pack,:include?,]basic_classes.eachdo|klass|basic_operators.eachdo|bop|ifklass.public_method_defined?(bop)refine(klass)dodefine_method(bop){}endendendend# bypass check_cfuncrefineBasicObjectdodef!enddef==endendrefineModuledodef==endendendend# disable optimizationRubyVM::InstructionSequence.compile_option={specialized_instruction: false}end