anchor.diff:      this.scope = {};
     }
   
  +  @override
     visitBlock(Block node) {
       _openNewScope(scope, (_) =>
           super.visitBlock(node));
     }
   
  +  @override
     visitFormalParameter(FormalParameter node) {
       this.scope[node.identifier.toString()] = this.declaredElements[node];
       super.visitFormalParameter(node);
     }
     
  +  @override
     visitClassDeclaration(ClassDeclaration node){
  +    
       _openNewScope(scope, (_) {
  -      this.scope["this"] = this.declaredElements[node];
  +      Our.ClassElement c = this.declaredElements[node];
  +
  +      c.declaredElements.forEach((k, v) {
  +        this.scope[k.toString()] = v;
  +      });
  +
  +      this.scope["this"] = c;
         super.visitClassDeclaration(node);
       });
     }
   
  +  @override
     visitVariableDeclaration(VariableDeclaration node) {
       node.safelyVisitChild(node.initializer, this);
  -    this.scope[node.name.toString()] = this.declaredElements[node];
  +    var namedElem = this.declaredElements[node];
  +    if (namedElem != null)
  +      this.scope[node.name.toString()] = namedElem;
  +
       node.safelyVisitChild(node.name, this);
     }
  -  
  +
  +  @override
  +  visitCascadeExpression(CascadeExpression node) {
  +  }
  +  
  +  @override
  +  visitFieldDeclaration(FieldDeclaration node) {
  +    node.visitChildren(this);
  +  }
  +  
  +  @override
     visitFunctionDeclaration(FunctionDeclaration node) {
   
       if (node.name != null) {
  
positive.code:     }
    }
  
    //Only resolve the prefix.
    //TODO handle library 'as ...' imports.
    visitPrefixedIdentifier(PrefixedIdentifier node) {
      node.safelyVisitChild(node.prefix, this);
    }
  
    //Only try to resolve the target.
    visitPropertyAcces(PropertyAccess node) {
      node.safelyVisitChild(node.target, this);
    }
  
    //Dont visit identifiers in these AST nodes.
    visitLibraryDirective(LibraryDirective node) {}
    visitImportDirective(ImportDirective node) {}
    visitExportDirective(ExportDirective node) {}
    visitPartDirective(PartDirective node) {}
    visitPartOfDirective(PartOfDirective node) {}
  }
negative.code:   
    void visitSourceElement(Our.SourceElement element) {
  
      blah = element.source;
  
  
      if (element.source != this.engine.entrySource) return;
      
      declaredElements.clear();
      currentLibrary = element.library;
  