/** * Get the flexible map of column information. * * @return The flexible map of column information. (NotNull, NotEmpty) */ protected Map<String, ColumnInfo> getColumnInfoFlexibleMap() { if (_columnInfoFlexibleMap != null) { return _columnInfoFlexibleMap; } final List<ColumnInfo> columnInfoList = getColumnInfoList(); synchronized (this) { if (_columnInfoFlexibleMap != null) { return _columnInfoFlexibleMap; } _columnInfoFlexibleMap = createFlexibleConcurrentMap(); for (ColumnInfo columnInfo : columnInfoList) { columnInfo.diveIntoFlexibleMap(_columnInfoFlexibleMap); } return _columnInfoFlexibleMap; } }