According to a 2008 paper by Westley Weimer and George Necula, the syntax of the codice_13...codice_10 blocks in Java is a contributing factor to software defects. When a method needs to handle the acquisition and release of 3–5 resources, programmers are apparently unwilling to nest enough blocks due to readability concerns, even when this would be a correct solution. It is possible to use a single codice_13...codice_10 block even when dealing with multiple resources, but that requires a correct use of sentinel values, which is another common source of bugs for this type of problem. Regarding the semantics of the codice_13...codice_15...codice_10 construct in general, Weimer and Necula write that "While try-catch-finally is conceptually simple, it has the most complicated execution description in the language specification et al. 1996 and requires four levels of nested “if”s in its official English description. In short, it contains a large number of corner cases that programmers often overlook."