public static boolean isArrowpointAllowed2(Node from, Node to, Knowledge knowledge, Graph graph) {
    if (knowledge == null) {
      return true;
    }

    if (!graph.getNodesInTo(to, Endpoint.ARROW).isEmpty()) {
      return false;
    }

    return !knowledge.edgeRequired(to.toString(), from.toString())
        && !knowledge.edgeForbidden(from.toString(), to.toString());
  }