private GraphWalker getGraphWalker(
      final Set<String> constantFieldPaths, final SortedSet<FieldSize> fieldSizes) {
    final Set<String> skipPrefixes = new HashSet<>();
    GraphVisitor gv =
        gpr -> {
          if (!skipPrefixes.stream().anyMatch(sp -> gpr.path().startsWith(sp))) {
            if (SHARED_CLASSES.stream().anyMatch(scz -> scz.isAssignableFrom(gpr.klass()))) {
              skipPrefixes.add(gpr.path());
            } else if (!startWithAnyOf(constantFieldPaths, gpr)
                && !startWithAnyOf(VARIABLE_SIZE_PATHS, gpr)) {

              fieldSizes.add(new FieldSize(gpr.path(), gpr.klass(), gpr.size()));
            }
          }
        };

    GraphWalker gw = new GraphWalker(gv);
    return gw;
  }
Field which value is dynamic and can only be calculated at runtime
ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/PendingTransactionEstimatedMemorySizeTest.java