// If the type is nested, simulate Java inner class access visibility by creating a
// reference to the outer type on the constructor and store it in the object
if (enclosingType != null) {
final ICPPASTDeclSpecifier parentReferenceDeclSpecifier = f.newTypedefNameSpecifier(new NameInfo(enclosingType.getName()).getName());
final IASTSimpleDeclaration parentReference = f.newSimpleDeclaration(parentReferenceDeclSpecifier);
final ICPPASTDeclarator parentReferenceDeclarator = f.newDeclarator(f.newName("__parent".toCharArray()));
parentReference.addDeclarator(parentReferenceDeclarator);
parentReferenceDeclarator.addPointerOperator(f.newPointer());
final ModifiersInfo modifiersInfo = new ModifiersInfo(false, false, true, false, false, false, false);
fields.add(new FieldDeclarationInfo(parentReference, modifiersInfo));
}
}