The result of the explained plan for this query: 
DEBUG: RETURN RESULTS TO STORED PROCEDURE
 NEST LOOP INNER JOIN
  filter by (L.LNAME = L.LNAME)
  INDEX SCAN of "L" using its primary key index (for deterministic order only)
   filter by (decode(A, null, 0, A) = 0)
  INDEX SCAN of "L" using "DECODE_IDX3"
  range-scan on 1 of 3 cols from (B >= ?0) while (B = ?0), filter by (ID = ?1)

This sounds like the explained plan should be better differentiating the table name and table alias for self join queries.