private void pushBlockTable(Block block) {
   if (!stack.isEmpty()) {
     if (!context().referenceTableStack.isEmpty()) {
       block.getReferenceTable().relink(context().referenceTableStack.peek());
     }
     context().referenceTableStack.push(block.getReferenceTable());
   }
 }
 @Override
 public void visitBlock(Block block) {
   pushBlockTable(block);
   definedInBlock(block.getReferenceTable().ownedSymbols(), block);
   for (GoloStatement statement : block.getStatements()) {
     statement.accept(this);
   }
   dropBlockTable();
 }