PsiAnnotationMemberValue () { GrNameValuePairStub stub = getStub(); if (stub != null) { String text = stub.getValue(); if (text == null) { return null; } PsiAnnotationMemberValue result = dereference(myDetachedValue); if (result == null) { GrAnnotationNameValuePair attribute = GroovyPsiElementFactory.getInstance(getProject()).createAnnotationAttribute(text, this); ((LightVirtualFile)attribute.getContainingFile().getViewProvider().getVirtualFile()).setWritable(false); myDetachedValue = new SoftReference<>(result = attribute.getValue()); } return result; } return getValue(); }