code: function inherit(layout, parent) {
          var result = ns.object.clone(parent);
  
          for (var key in layout) {
              //  В ключе должен быть "путь" вида 'app left@ message content@'.
              var parts = key.split(hasSpacesRE);
              var l = parts.length;
  
              //  Путь должен заканчиваться на бокс.
              //  Т.е. на строку вида 'foo@'.
              //  Потому что можно переопределять только содержимое боксов.
              //  Изменять лэйаут блоков нельзя.
              if ( getViewType( parts[l - 1] ) !== ns.L.BOX ) {
                  throw new Error("[ns.layout] Can't overwrite view layout '" + parts[l - 1] + "'");
              }
  
              var lvalue = result;
              for (var i = 0; i < l - 1; i++) {
                  lvalue = lvalue[ cleanKey(parts[i]) ].views;
                  if (!lvalue) {
                      throw new Error( '[no.layout] Path "' + parts.slice(0, i).join(' ') + '" is undefined in this layout and cannot be extended' );
                  }
              }
              lvalue[ cleanKey(parts[l - 1]) ] = layout[key];
          }
  
          return result;
      }
docs: Наследует layout от parent'а.
  @param {object} layout
  @param {object} parent
  @returns {object}