Checks that debugger agent uses source content to restore breakpoints.

Running test: testSameSource
function foo() {
#boo();
}
function foo() {
#boo();
}

Running test: testOneLineOffset
function foo() {
#boo();
}
function foo() {
#boo();
boo();
}

Running test: testTwoSimilarLinesCloseToOriginalLocation1
function foo() {


#boo();
}
function foo() {
#boo();

newCode();
boo();



boo();
}

Running test: testTwoSimilarLinesCloseToOriginalLocation2
function foo() {


#boo();
}
function foo() {
boo();
newLongCode();
newCode();
#boo();



boo();
}

Running test: testHintIgnoreWhiteSpaces
function foo() {



#boo();
}
function foo() {
foo();


#boo();
}

Running test: testCheckOnlyLimitedOffsets
function foo() {
#boo();
}
function foo() {
#newCode();
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...
boo();
}
