code: function getRangeVisual(nodeModel, name) {
      // 'colorRange', 'colorARange', 'colorSRange'.
      // If not exsits on this node, fetch from levels and series.
      var range = nodeModel.get(name);
      return (isArray(range) && range.length) ? {name: name, range: range} : null;
  }
docs: Notice: If we dont have the attribute 'colorRange', but only use attribute 'color' to represent both concepts of 'colorRange' and 'color', (It means 'colorRange' when 'color' is Array, means 'color' when not array), this problem will be encountered: If a level-1 node dont have children, and its siblings has children, and colorRange is set on level-1, then the node can not be colored. So we separate 'colorRange' and 'color' to different attributes.