anchor.diff:    Map<Name, VariableElement> declaredVariables = <Name, VariableElement>{};
     Map<Name, FunctionElement> declaredFunctions = <Name, FunctionElement>{};
     
  -  VariableElement addVariable(Name name, VariableElement variable) => declaredVariables[name] = variable; 
  +  VariableElement addVariable(VariableElement variable) => declaredVariables[variable.name] = variable; 
     VariableElement lookupVariableElement(Name name) => declaredVariables[name];
   
  -  FunctionElement addFunction(Name name, FunctionElement func) => declaredFunctions[name] = func; 
  -  FunctionElement lookupFunctionElement(Name name) => declaredFunctions[name];
  +  NamedFunctionElement addFunction(NamedFunctionElement func) => declaredFunctions[func.name] = func; 
  +  NamedFunctionElement lookupFunctionElement(Name name) => declaredFunctions[name];
   }
   
   abstract class Element {
  
positive.code:       engine.errors.addError(new EngineError("Visited constructor declaration, inside another class member.", source, node.offset, node.length), true);
      
      _currentConstructorElement = new ConstructorElement(node, _currentClassElement);
      _currentClassElement.addConstructor(_currentConstructorElement);
  
      _currentConstructorElement.enclosingBlock = _currentBlock;
      _currentBlock.nestedBlocks.add(_currentConstructorElement);
  
negative.code:       engine.errors.addError(new EngineError("Visited method declaration, inside another method declaration.", source, node.offset, node.length), true);
      
      _currentMethodElement = new MethodElement(node, _currentClassElement);
      _currentClassElement.addMethod(new Name.FromIdentifier(node.name), _currentMethodElement);
  
      _currentMethodElement.enclosingBlock = _currentBlock;
      _currentBlock.nestedBlocks.add(_currentMethodElement);
  