private IASTCompositeTypeSpecifier findCurrentCompositeTypeSpecifier(IASTTranslationUnit ast)
     throws OperationCanceledException, CoreException {
   final int start = selectedRegion.getOffset();
   Container<IASTCompositeTypeSpecifier> container = new Container<IASTCompositeTypeSpecifier>();
   ast.accept(new CompositeTypeSpecFinder(start, container));
   return container.getObject();
 }
    @Override
    public int visit(IASTDeclSpecifier declSpec) {
      if (declSpec instanceof IASTCompositeTypeSpecifier) {
        IASTFileLocation loc = declSpec.getFileLocation();
        if (start > loc.getNodeOffset() && start < loc.getNodeOffset() + loc.getNodeLength()) {
          container.setObject((IASTCompositeTypeSpecifier) declSpec);
          return ASTVisitor.PROCESS_ABORT;
        }
      }

      return super.visit(declSpec);
    }