docs: public Map<Integer, int[][]> getGridNodesPerMoneyness() {
  
  		//See if the map has already been instantiated.
  		if(keyMap != null) {
  			return Collections.unmodifiableMap(keyMap);
  		}
  
  		//Otherwise create the map and return it.
  		Map<Integer, List<Set<Integer>>> newMap = new HashMap<>();
  
  		for(DataKey key : entryMap.keySet()) {
  			if(! newMap.containsKey(key.moneyness)) {
  				newMap.put(key.moneyness, new ArrayList<Set<Integer>>());
  				newMap.get(key.moneyness).add(new HashSet<Integer>());
  				newMap.get(key.moneyness).add(new HashSet<Integer>());
  			}
  			newMap.get(key.moneyness).get(0).add(key.maturity);
  			newMap.get(key.moneyness).get(1).add(key.tenor);
  		}
  
  		Map<Integer, int[][]> keyMap = new TreeMap<>();
  		for(int moneyness : newMap.keySet()) {
  			int[][] values = new int[2][];
  
  			values[0] = newMap.get(moneyness).get(0).stream().sorted().mapToInt(Integer::intValue).toArray();
  			values[1] = newMap.get(moneyness).get(1).stream().sorted().mapToInt(Integer::intValue).toArray();
  
  			keyMap.put(moneyness, values);
  		}
  		this.keyMap = keyMap;
  		return Collections.unmodifiableMap(keyMap);
  	}