code: function() {
  
          if (this.ctx.method && this.ctx.method !== 'make') return Q.resolve(false);
          if (this.ctx.force) return Q.resolve(false);
  
          var arch = this.ctx.arch,
              parent = this.lastModified(),
              children = arch.getChildren(this)
                  .filter(function(child) {
                      return (child && (arch.getNode(child)) instanceof exports.FileNode);
                  })
                  .map(function(child) {
                      return arch.getNode(child).lastModified();
                  });
  
          // with no deps we must always check for file existance
          // isValid() == false will guarantee it
          if (!children.length) return Q.resolve(false);
  
          var _this = this;
          return Q.all([parent].concat(children)).then(function(all) {
              var cur = all.shift(),
                  max = Math.max.apply(Math, all);
  
              LOGGER.fdebug('*** isValid(%s): cur=%s, max=%s, valid=%s', _this.getId(), cur, max, cur >= max && max > -1);
              return cur >= max && max > -1;
          });
  
      }
docs: isValid() implementation.
  
  @return {Promise * Boolean}  Node validity state (true if node is valid).