code: public Map<String, Object> flattenAsMap() {
      if (flattenedMap != null) return flattenedMap;
  
      flattenedMap = newJsonifyLinkedHashMap();
      reduce(source);
  
      while (!elementIters.isEmpty()) {
        IndexedPeekIterator<?> deepestIter = elementIters.getLast();
        if (!deepestIter.hasNext()) {
          elementIters.removeLast();
        } else if (deepestIter.peek() instanceof Member) {
          Member mem = (Member) deepestIter.next();
          reduce(mem.getValue());
        } else { // JsonValue
          JsonValue val = (JsonValue) deepestIter.next();
          reduce(val);
        }
      }
  
      return flattenedMap;
    }
docs: Returns a flattened JSON as Map.
  
  @return a flattened JSON as Map