void removeMixin ( ) { int idx = state . stackIdx - 1 ; Scope current = state . stack . get ( idx ) ; if ( idx > 0 ) { Scope previous = state . stack . get ( idx - 1 ) ; Map < String , Expression > currentReturn = previous . returns ; Map < String , Expression > vars = current . variables ; if ( vars != null ) { for ( Entry < String , Expression > entry : vars . entrySet ( ) ) { if ( previous . getVariable ( entry . getKey ( ) ) == null ) { currentReturn . put ( entry . getKey ( ) , ValueExpression . eval ( this , entry . getValue ( ) ) ) ; } } } vars = current . returns ; if ( vars != null ) { for ( Entry < String , Expression > entry : vars . entrySet ( ) ) { if ( previous . getVariable ( entry . getKey ( ) ) == null ) { currentReturn . put ( entry . getKey ( ) , ValueExpression . eval ( this , entry . getValue ( ) ) ) ; } } } } state . stackIdx -- ; state . rulesStackModCount ++ ; }
Remove the scope of a mixin .