text: 'use strict';
  
  
  var Type = require('../type');
  
  
  var _hasOwnProperty = Object.prototype.hasOwnProperty;
  var _toString       = Object.prototype.toString;
  
  
  function resolveYamlOmap(state) {
    var objectKeys = [], index, length, pair, pairKey, pairHasKey,
        object = state.result;
  
    for (index = 0, length = object.length; index < length; index += 1) {
      pair = object[index];
      pairHasKey = false;
  
      if ('[object Object]' !== _toString.call(pair)) {
        return false;
      }
  
      for (pairKey in pair) {
        if (_hasOwnProperty.call(pair, pairKey)) {
          if (!pairHasKey) {
            pairHasKey = true;
          } else {
            return false;
          }
        }
      }
  
      if (!pairHasKey) {
        return false;
      }
  
      if (-1 === objectKeys.indexOf(pairKey)) {
        objectKeys.push(pairKey);
      } else {
        return false;
      }
    }
  
    return true;
  }
  
  
  module.exports = new Type('tag:yaml.org,2002:omap', {
    loadKind: 'sequence',
    loadResolver: resolveYamlOmap
  });
  