code: private DNode findFrontendNode() {
          DNode frontend = getNode(requirements.getFrontend());
          
          if (frontend == DNode.NOT_FOUND) {
              
              frontend = searchFrontendNode();
  
              if (frontend == DNode.NOT_FOUND) {
                  frontend = calculateSourceNode();
              }
          }
          return frontend;
      }
docs: Assigns a frontend node to the graph according to the rules in the class header