static Pair estimateWebBotSize(O o) { Collection fields = fields(o); new L l; for (S field : fields) { if (sizeCalculation_shouldIgnoreProgramField(field)) continue; O value = get(o, field); if (value == null) continue; l.add(value); } O[] array = asObjectArray(l); new guessDeepObjectSize_recursive_Data data; data.seen.add(o); ret pair(data, guessDeepObjectSize_recursive(data, array) -inMemorySizeOfArray(array) +unsafe_sizeOf(o)); }