package Ġorg . jetbrains . research . ml . ast . transform ations . multiple Operator Comparison Ċ Ċ import Ġcom . jetbrains . python . Py Token Types Ċ import Ġcom . jetbrains . python . psi . Py Binary Expression Ċ import Ġcom . jetbrains . python . psi . Py Element Generator Ċ import Ġcom . jetbrains . python . psi . Py Element Visitor Ċ import Ġorg . jetbrains . research . ml . ast . transform ations . Performed Command Storage Ċ import Ġorg . jetbrains . research . ml . ast . transform ations . Py Utils Ċ import Ġorg . jetbrains . research . ml . ast . transform ations . safe Perform Command Ċ Ċ internal Ġclass ĠMultiple Operator Comparison Visitor ( private Ġval Ġcommands Storage : ĠPer formed Command Storage ?) Ġ: ĊĠĠĠ ĠPy Element Visitor () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvisit Py Binary Expression ( node : ĠPy Binary Expression ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle Binary Expression ( node ) ĊĠĠĠĠĠĠĠ Ġsuper . visit Py Binary Expression ( node ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Binary Expression ( node : ĠPy Binary Expression ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! node . is Multiple Operator Comparison ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠPy Element Generator . getInstance ( node . project ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Binary Expression Ġ= Ġtransform Multiple Comparison Expression ( node , Ġgenerator ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġnew Br aced Expression Ġ= ĠPy Utils . brace Expression ( new Binary Expression ) ĊĠĠĠĠĠĠĠ Ġcommands Storage . safe Perform Command ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġnode . replace ( new Br aced Expression ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Replace Ġmultiple Ġoperation Ġcomparison Ġwith Ġbr aced Ġexpression " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransform Multiple Comparison Expression ( ĊĠĠĠĠĠĠĠ Ġnode : ĠPy Binary Expression , ĊĠĠĠĠĠĠĠ Ġgenerator : ĠPy Element Generator ĊĠĠĠ Ġ): ĠPy Binary Expression ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! node . is Multiple Operator Comparison ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Binary Expression Ġ= Ġnode . left Expression Ġas ĠPy Binary Expression ĊĠĠĠĠĠĠĠ Ġval Ġleft Right Expression Ġ= Ġleft Binary Expression . right Expression Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġright Expression Ġ= Ġnode . right Expression Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġnode Operator Ġ= Ġnode . psi Operator Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Right Expression Ġ= Ġgenerator . create Binary Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Operator . text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Right Expression , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Expression ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Left Binary Expression Ġ= Ġtransform Multiple Comparison Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Binary Expression , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator ĊĠĠĠĠĠĠĠ Ġ) Ġ?: Ġleft Binary Expression ĊĊĠĠĠĠĠĠĠ Ġreturn Ġgenerator . create Binary Expression (" and ", Ġnew Left Binary Expression , Ġnew Right Expression ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠPy Binary Expression . is Comparison (): ĠBoolean Ġ= ĠPy Token Types . COMP AR IS ON _ OPER ATIONS . contains ( operator ) ĊĊĠĠĠ Ġprivate Ġfun ĠPy Binary Expression . is Multiple Operator Comparison (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( operator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPy Token Types . AND _ KEYWORD , ĠPy Token Types . OR _ KEYWORD Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Binary Expression Ġ= Ġleft Expression Ġas ? ĠPy Binary Expression Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġleft Binary Expression . is Comparison () Ġ&& Ġthis . is Comparison () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ