code: @Override
      public boolean isConstructed(Variable variable) {
          return getVariables().contains(variable) && getRootNode().isConstructed(variable, getChildren());
      }
docs: TODO: should we cache the boolean?