step 1 : cleaning Insert
step 2 : cleaning functions
step 3 : resolve ParameterContainer
step 4 : resolve Table
step 5 : fix columns with table identifier
step 6 : delete parameters dependency

remove $driver from IF which switch between getSqlString() and prepareStatement() algorithm
step 7 : move prepareStatement() and getSqlString() to AbstractSql
step 8 : AbstractSql::processExpression() return string, paremeters push to ParameterContainer directly
step 9 : code optimization
step 10 : remove duplicates from AbstractSql::processSubSelect() and from Platform decorators, unification name of the $subject variable
step 11 : remove duplicates from AbstractPlatform
step 12 : move localize variables to AbstractSql::localizeVariables()
step 13 : optimize functions parameters
 - move $this->processInfo['paramPrefix'] to AbstractSql class
 - AbstractSql::resolveColumnValue() - move $namedParameterPrefix parameter to last position
step 14 : delete Platform\Oracle\SelectDecorator::processJoins() because this is Select::processJoins() dublicate
step 15 : add functional tests
fix doc block
fix after rebase and merge RP#5142
#5701 - removing duplicate comments, minor CS cleanups, removing unused assignments
#5701 - correcting type-hint for nullable value
#5701 - minor CS fixes (spacing/docblocks)