code: @Override
      public List<Column> getColumns(List<String> columnNames) {
          if (columnsByName.isEmpty()) {
              Map<String, Column> columnsMap = new HashMap<String, Column>();
              List<Column> allColumns = sasFileParser.getColumns();
              for (Column column : allColumns) {
                  columnsMap.put(column.getName(), column);
              }
              for (String name : columnNames) {
                  if (columnsMap.containsKey(name)) {
                      columnsByName.add(columnsMap.get(name));
                  } else {
                      throw new NoSuchElementException(UNKNOWN_COLUMN_NAME);
                  }
              }
          }
          return columnsByName;
      }
docs: The function to get the {@link Column} list from {@link SasFileReader}
  according to the columnNames.
  
  @param columnNames - list of column names that should be returned.
  @return a list of columns.