private final List<RESPONSE> propfind(
      final Iterable<QName> properties, final Resource resource, final Depth depth) {
    final List<RESPONSE> responses = new ArrayList<RESPONSE>();

    responses.add(
        response(href(relativizeResource(resource)), getProperties(resource, properties)));
    if (depth != ZERO) {
      for (final Resource child : resource.members()) {
        responses.addAll(propfind(properties, child, depth.decreaseDepth()));
      }
    }
    return responses;
  }