code: @SuppressWarnings("unchecked")
      public DocumentNode getSpecificationHierarchy(Repository repository, SystemUnderTest systemUnderTest, String identifier) throws GreenPepperServerException
      {
          Vector params = CollectionUtil.toVector(repository.marshallize(), systemUnderTest.marshallize());
          
          log.debug("Get Specification Hierarchy: " + repository.getName() + " & " + systemUnderTest.getName());
          Vector<Object> vector = (Vector<Object>)execute(XmlRpcMethodName.getSpecificationHierarchy, params, identifier);
  
          DocumentNode documentNode = DocumentNode.toDocumentNode(vector);
          if (log.isDebugEnabled()) {
              TreeTraverser<DepthAwareDocumentNode> traverser = new TreeTraverser<DepthAwareDocumentNode>() {
  
                  @Override
                  public Iterable<DepthAwareDocumentNode> children(DepthAwareDocumentNode root) {
                      
                      List<DepthAwareDocumentNode> depthAwareDocumentNodes = new ArrayList<DepthAwareDocumentNode>();
                      Iterable<DocumentNode> children = root.getChildren();
                      for (DocumentNode child : children) {
                          DepthAwareDocumentNode node = new DepthAwareDocumentNode(child, root.depth+1);
                          depthAwareDocumentNodes.add(node);
                      }
                      return depthAwareDocumentNodes;
                  }
              };
              
              for (DepthAwareDocumentNode node : traverser.preOrderTraversal(new DepthAwareDocumentNode(documentNode, 0))) {
                  String state = node.documentNode.canBeImplemented() ? "workingcopy" : "implemented";
                  log.debug("[{}] [{}] {} {}", new String[]{node.documentNode.isExecutable() ? "X" : " ", state, String.format("%"+(node.depth+1)+"s", "") , node.documentNode.getTitle()});
              }
          }
          return documentNode;
      }
docs: {@inheritDoc}