code: private Obj compileObject(Map<String, ? extends Object> m, PathMap pathMap) {
  		for(String k : discardedKeys) {
  			m.remove(k);
  		}
  		Obj res = Obj.make();
  		for(Entry<String, ? extends Object> entry : m.entrySet()) {
  			String k = entry.getKey();
  			Object v = entry.getValue();
  			if(v == null) {
  				continue;
  			} else if(v instanceof Collection<?>) {
  				if(pathMap.isTraversable(k)) {
  					Arr arr = res.arr(k);
  					for(Object o : (Collection<?>)v) {
  						Object x = evalScalarOrObject(k, o, pathMap);
  						arr.add(x);
  					}
  				}
  			} else {
  				Object x = evalScalarOrObject(k, v, pathMap);
  				if(x != null) {
  					res.put(k, x);
  				}
  			}
  		}
  		return res;
  	}
docs: TODO array of array not supported