The following should not compile, because Ithree requires two boom fields (with different values, for fun, though the spec excludes the case where they are the same.) It does compile.
The fix is not easy. First it is in polyglot's code:
Second, you need to fix this pattern of findVariableSilent, which should simply call findVariable, and if there is an exception, return null. But instead it does the opposite.