code: public String columnGet(String key) {
          String resolvedKey = resolveColumnKey(key);
          String cachedValue = columnMapCache.get(resolvedKey);
          if (cachedValue != null) {
              return cachedValue;
          }
          String value = columnMap.get(resolvedKey);
          if (value == null && parent != null) {
              value = parent.columnGet(resolvedKey);
          }
          if (value == null) {
              return null;
          }
          String expandedString = expand(value, true);
          columnMapCache.put(resolvedKey, expandedString);
          return expandedString;
      }
docs: Looks up and returns the String associated with the given key. First looks for an association
  in this LayoutMap. If there's no association, the lookup continues with the parent map - if
  any.
  
  @param key key whose associated value is to be returned.
  @return the column String associated with the {@code key}, or {@code null} if no LayoutMap in
  the parent chain contains an association.
  
  @throws NullPointerException if {@code key} is {@code null}
  
  @see Map#get(Object)