anchor.diff:  
     bool typeGuardWouldBeValuable(HInstruction instruction,
                                   HType speculativeType) {
  -
  -    Element source = instruction.sourceElement;
       // Do not insert a type guard if the instruction has a type
       // annotation that disagrees with the speculated type.
  +    Element source = instruction.sourceElement;
       if (source !== null) {
         Type sourceType = source.computeType(compiler);
         Type speculatedType = speculativeType.computeType(compiler);
  
positive.code:       }
      }
  
      bool isNested(HBasicBlock inner, HBasicBlock outer) {
        if (inner === outer) return false;
        if (outer === null) return true;
  
negative.code:       HBasicBlock userLoopHeader = user.block.enclosingLoopHeader;
        if (isNested(userLoopHeader, currentLoopHeader)) return true;
      }
  
      // Insert type guards for small methods with no loops and multiple
      // uses. These are expected to be helper methods that could
      // benefit from type guards. If there is a loop, we expect the
      // loop to take most of the time and that inserting a type guard
      // for something not used in the loop will not be valuable.
      if (smallMethodNoLoops && instruction.usedBy.length > 2) return true;
  
      return false;
    }
  
  