private boolean cloneFieldRead(AFieldExpIR node) { if (jmlGen.getJavaSettings().getDisableCloning()) { return false; } AVarDeclIR decl = node.getAncestor(AVarDeclIR.class); /* * Normalized state designators do not need cloning */ if (decl != null && jmlGen.getStateDesInfo().isStateDesDecl(decl)) { return false; } if (jmlGen.getJavaGen().getJavaFormat().getValueSemantics().isCloneFree(node)) { return false; } JavaValueSemantics valSem = jmlGen.getJavaGen().getJavaFormat().getValueSemantics(); return !inTarget && !isObjOfFieldExp(node) && !isColOfMapSeq(node) && valSem.mayBeValueType(node.getType()); }