final boolean canDeclare ( String name ) { return ! hasOwnSlot ( name ) && ( ! isFunctionBlockScope ( ) || ! getParent ( ) . hasOwnSlot ( name ) || isBleedingFunctionName ( name ) ) ; }
Returns true if the name can be declared on this scope without causing illegal shadowing . Specifically this is aware of the connection between function container scopes and function block scopes and returns false for redeclaring parameters on the block scope .