*  name right after the '<' token and probably treating this like a
         *  'call' instruction.
         */
-       target = notes->src->offsets[cursor->ops.target.offset];
+       target = annotated_source__get_line(notes->src, cursor->ops.target.offset);
        if (target == NULL) {
                ui_helpline__printf("WARN: jump target inconsistency, press 'o', notes->offsets[%#x] = NULL\n",
                                    cursor->ops.target.offset);
 
        return err;
 }
 
+struct annotation_line *annotated_source__get_line(struct annotated_source *src,
+                                                  s64 offset)
+{
+       struct annotation_line *al;
+
+       list_for_each_entry(al, &src->source, node) {
+               if (al->offset == offset)
+                       return al;
+       }
+       return NULL;
+}
+
 static unsigned annotation__count_insn(struct annotation *notes, u64 start, u64 end)
 {
        unsigned n_insn = 0;
        u64 offset;
 
        for (offset = start; offset <= end; offset++) {
-               if (notes->src->offsets[offset])
+               if (annotated_source__get_line(notes->src, offset))
                        n_insn++;
        }
        return n_insn;
                        return;
 
                for (offset = start; offset <= end; offset++) {
-                       struct annotation_line *al = notes->src->offsets[offset];
+                       struct annotation_line *al;
 
+                       al = annotated_source__get_line(notes->src, offset);
                        if (al && al->cycles && al->cycles->ipc == 0.0) {
                                al->cycles->ipc = ipc;
                                cover_insn++;
                if (ch && ch->cycles) {
                        struct annotation_line *al;
 
-                       al = notes->src->offsets[offset];
+                       al = annotated_source__get_line(notes->src, offset);
                        if (al && al->cycles == NULL) {
                                al->cycles = zalloc(sizeof(*al->cycles));
                                if (al->cycles == NULL) {
                        struct cyc_hist *ch = ¬es->branch->cycles_hist[offset];
 
                        if (ch && ch->cycles) {
-                               struct annotation_line *al = notes->src->offsets[offset];
+                               struct annotation_line *al;
+
+                               al = annotated_source__get_line(notes->src, offset);
                                if (al)
                                        zfree(&al->cycles);
                        }
                return;
 
        for (offset = 0; offset < size; ++offset) {
-               struct annotation_line *al = notes->src->offsets[offset];
+               struct annotation_line *al;
                struct disasm_line *dl;
 
+               al = annotated_source__get_line(notes->src, offset);
                dl = disasm_line(al);
 
                if (!disasm_line__is_valid_local_jump(dl, sym))