with_near_statement ==>
with ident_or_self_list near statement_list [else statement_list] end

ident_or_self_list ==>identifier | self { , identifier | self }

The with-near statement asserts that particular reference objects must remain near at run-time. The ident_or_self_list may contain local variables, arguments, and self; these are called near variables. When the with statement begins execution, the identifiers are checked to ensure that all of them hold either objects that are near or void. If this is true then the statements following near are executed, and it is a fatal error if the identifiers stop holding either near objects or void at any time. It is a fatal error if some identifiers hold neither near objects nor void and there is no else. Otherwise, the statements following the else are executed.