docs: @Override
      protected void executeRuntimeStep(OperationContext context, ModelNode operation) throws OperationFailedException {
          ModelNode unitModelNode = UNIT_ATTRIBUTE.resolveModelAttribute(context, operation);
          MeasurementUnit sizeUnit = MeasurementUnit.BYTES;
          if (unitModelNode.isDefined()) {
              try {
                  sizeUnit = MeasurementUnit.valueOf(unitModelNode.asString());
              } catch (IllegalArgumentException ex) {
              }
          }
          // Get the resource
          final Resource resource = context.readResource(PathAddress.EMPTY_ADDRESS);
          final ModelNode model = resource.getModel();
          final ModelNode metric = new ModelNode();
          for(RelativePathSizeAttribute relativePathAttribute : relativePathAttributes) {
              String replyParameterName = relativePathAttribute.pathAttribute.getName();
              final ModelNode relativeTo;
              final ModelNode path;
              try {
                  // Resolve the model values
                  relativeTo = readAttributeValue(context, relativePathAttribute.relativeToAttribute);
                  path = readAttributeValue(context, relativePathAttribute.pathAttribute);
              } catch (OperationFailedException ex) {
                  return;
              }
              // Resolve paths
              final String result;
              if (relativeTo.isDefined()) {
                  // If resolving the full path and a path is defined
                  if (path.isDefined()) {
                      result = pathManager.resolveRelativePathEntry(path.asString(), relativeTo.asString());
                  } else {
                      result = pathManager.getPathEntry(relativeTo.asString()).resolvePath();
                  }
              } else if (path.isDefined()) {
                  if (pathManager != null) {
                      result = pathManager.resolveRelativePathEntry(path.asString(), null);
                  } else {
                      result = path.asString();
                  }
              } else {
                  throw ControllerLogger.ROOT_LOGGER.noPathToResolve(relativePathAttribute.relativeToAttribute.getName(),
                          replyParameterName, model);
              }
              Double offset = MeasurementUnit.calculateOffset(MeasurementUnit.BYTES, sizeUnit);
              try {
                  Path folder = new File(result).toPath();
                  PathSizeWalker walker = new PathSizeWalker();
                  Files.walkFileTree(folder, walker);
                  ModelNode replyParameterNode;
                  if (this.parentAttribute != null) {
                      replyParameterNode = metric.get(parentAttribute.getName()).get(replyParameterName);
                  } else {
                      replyParameterNode = metric.get(replyParameterName);
                  }
                  replyParameterNode.get(USED_SPACE).set(new ModelNode(offset * walker.getSize().doubleValue()));
                  if (Files.exists(folder)) {
                      BasicFileAttributes attributes = Files.getFileAttributeView(folder, BasicFileAttributeView.class).readAttributes();
                      replyParameterNode.get(RESOLVED_PATH).set(folder.toAbsolutePath().toString());
                      DateTimeFormatter formatter = getDateFormat();
                      ZoneId zoneId = getZoneId();
                      replyParameterNode.get(CREATION_TIME).set(formatter.format(attributes.creationTime().toInstant().atZone(zoneId)));
                      replyParameterNode.get(LAST_MODIFIED).set(formatter.format(attributes.lastModifiedTime().toInstant().atZone(zoneId)));
                      replyParameterNode.get(AVAILABLE_SPACE).set(new ModelNode(offset * Files.getFileStore(folder).getUsableSpace()));
                  }
              } catch (IOException ex) {
                  throw new OperationFailedException(ex);
              }
          }
          context.getResult().set(metric);
      }