TypeMirror setterClass = (TypeMirror) getAnnotationValue(value.classMirror, CEYLON_ATTRIBUTE_ANNOTATION, "setterClass");
// void.class is the default value, I guess it's a primitive?
if(setterClass != null && !setterClass.isPrimitive()){
ClassMirror setterClassMirror = setterClass.getDeclaredClass();
value.setVariable(true);
SetterWithLocalDeclarations setter = makeSetter(value, setterClassMirror);
// adding local scopes should be done last, when we have the setter, because it may be needed by container chain
addLocalDeclarations(value, value.classMirror, value.classMirror);
addLocalDeclarations(setter, setterClassMirror, setterClassMirror);
}else if(value.isToplevel() && value.isTransient() && value.isVariable()){
makeSetter(value, value.classMirror);