<commit_before>'use strict';

var assign                = require('es5-ext/object/assign')
  , callable              = require('es5-ext/object/valid-callable')
  , d                     = require('d/d')
  , lazy                  = require('d/lazy')
  , injectPrimitive       = require('../utils/inject-primitive')
  , injectPrimitiveNested = require('../utils/inject-primitive-nested')
  , Observable            = require('./observable')
  , Multiple              = require('./multiple')

  , call = Function.prototype.call
  , hasOwnProperty = Object.prototype.hasOwnProperty, create = Object.create
  , keys = Object.keys, defineProperties = Object.defineProperties;

module.exports = function (object, item) {
	defineProperties(object, assign({

		// Item
		__itemPrototype__: d('', item),
		__multiples__: d('', create(null)),
		_getMultipleItems_: d(function (pKey) {
			var multiples = this._multiples_;
			if (hasOwnProperty.call(multiples, pKey)) return multiples[pKey];
			return injectPrimitiveNested(this,
				multiples[pKey] = create(multiples[pKey] || null),
				'__multiples__', pKey);
		}),
		_getOwnMultipleItem_: d(function (pKey, key, sKey) {
			var setData = this._getMultipleItems_(pKey);
			if (hasOwnProperty.call(setData, sKey)) return setData[sKey];
			if (setData[sKey]) return setData[sKey]._create_(this, setData);
			return item._create_(this, pKey, key, sKey, setData);
		}),

		// Observable
		_getMultipleItemObservable_: d(function (pKey, sKey, key) {
			var observables = this._observableMultipleItems_;
			if (observables[pKey]) observables = observables[pKey];
			else observables = observables[pKey] = create(null);
			if (observables[sKey]) return observables[sKey];
			return (observables[sKey] = new Observable(this, pKey, sKey, key));
		}),<commit_msg>`_getMultipleItem_`<commit_after>'use strict';

var assign                = require('es5-ext/object/assign')
  , callable              = require('es5-ext/object/valid-callable')
  , d                     = require('d/d')
  , lazy                  = require('d/lazy')
  , injectPrimitive       = require('../utils/inject-primitive')
  , injectPrimitiveNested = require('../utils/inject-primitive-nested')
  , Observable            = require('./observable')
  , Multiple              = require('./multiple')

  , call = Function.prototype.call
  , hasOwnProperty = Object.prototype.hasOwnProperty, create = Object.create
  , keys = Object.keys, defineProperties = Object.defineProperties;

module.exports = function (object, item) {
	defineProperties(object, assign({

		// Item
		__itemPrototype__: d('', item),
		__multiples__: d('', create(null)),
		_getMultipleItems_: d(function (pKey) {
			var multiples = this._multiples_;
			if (hasOwnProperty.call(multiples, pKey)) return multiples[pKey];
			return injectPrimitiveNested(this,
				multiples[pKey] = create(multiples[pKey] || null),
				'__multiples__', pKey);
		}),
		_getOwnMultipleItem_: d(function (pKey, key, sKey) {
			var setData = this._getMultipleItems_(pKey);
			if (hasOwnProperty.call(setData, sKey)) return setData[sKey];
			if (setData[sKey]) return setData[sKey]._create_(this, setData);
			return item._create_(this, pKey, key, sKey, setData);
		}),
		_getMultipleItem_: d(function (pKey, sKey) {
			var data = this.__mutliples__[pKey];
			if (!data) return this.__itemPrototype__;
			return data[sKey] || this.__itemPrototype__;
		}),

		// Observable
		_getMultipleItemObservable_: d(function (pKey, sKey, key) {
			var observables = this._observableMultipleItems_;
			if (observables[pKey]) observables = observables[pKey];
			else observables = observables[pKey] = create(null);
			if (observables[sKey]) return observables[sKey];
			return (observables[sKey] = new Observable(this, pKey, sKey, key));
		}),
{'fraction_non_alphanumeric': 0.14009533898305085, 'fraction_numerical': 0.001059322033898305, 'mean_word_length': 3.739021329987453, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2632446', 'n_tokens_mistral': 1272, 'n_tokens_neox': 1163, 'n_words': 238}