src/hash-code/context.js
function HashCodeContext(value, hashCode, options) {
  if (options == null) {
    options = {};
  }

  /**
   * A reference to {@link Nevis.hashCode} which can be called within a {@link HashCodeGenerator}.
   *
   * @private
   * @type {Function}
   */
  this._hashCode = hashCode;

  /**
   * The options to be used to generate the hash code for the value.
   *
   * @public
   * @type {Nevis~HashCodeOptions}
   */
  this.options = {
    allowCache: options.allowCache !== false,
    filterProperty: options.filterProperty != null ? options.filterProperty : function() {
      return true;
    },
    ignoreHashCode: Boolean(options.ignoreHashCode),
    ignoreInherited: Boolean(options.ignoreInherited),
    ignoreMethods: Boolean(options.ignoreMethods)
  };

  /**
   * The string representation of the value whose hash code is to be generated.
   *
   * This is generated using <code>Object.prototype.toString</code> and is intended to be primarily used for more
   * specific type-checking.
   *
   * @public
   * @type {string}
   */
  this.string = Object.prototype.toString.call(value);

  /**
   * The type of the value whose hash code is to be generated.
   *
   * This is generated using <code>typeof</code> and is intended to be primarily used for simple type-checking.
   *
   * @public
   * @type {string}
   */
  this.type = typeof value;

  /**
   * The value whose hash code is to be generated.
   *
   * @public
   * @type {*}
   */
  this.value = value;
}
function HashCodeContext(value, hashCode, options) {
  if (options == null) {
    options = {};
  }

  /**
   * A reference to {@link Nevis.hashCode} which can be called within a {@link HashCodeGenerator}.
   *
   * @private
   * @type {Function}
   */
  this._hashCode = hashCode;

  /**
   * The options to be used to generate the hash code for the value.
   *
   * @public
   * @type {Nevis~HashCodeOptions}
   */
  this.options = {
    allowCache: options.allowCache !== false,
    filterProperty: options.filterProperty != null ? options.filterProperty : function() {
      return true;
    },
    ignoreHashCode: Boolean(options.ignoreHashCode),
    ignoreInherited: Boolean(options.ignoreInherited),
    ignoreMethods: Boolean(options.ignoreMethods)
  };

  /**
   * The string representation of the value whose hash code is to be generated.
   *
   * This is generated using <code>Object.prototype.toString</code> and is intended to be primarily used for more
   * specific type-checking.
   *
   * @public
   * @type {string}
   */
  this.string = Object.prototype.toString.call(value);

  /**
   * The type of the value whose hash code is to be generated.
   *
   * This is generated using <code>typeof</code> and is intended to be primarily used for simple type-checking.
   *
   * @public
   * @type {string}
   */
  this.type = typeof value;

  /**
   * The value whose hash code is to be generated.
   *
   * @public
   * @type {*}
   */
  this.value = value;
}
function HashCodeContext ( value , hashCode , options ) { if ( options == null ) { options = { } ; } /**
   * A reference to {@link Nevis.hashCode} which can be called within a {@link HashCodeGenerator}.
   *
   * @private
   * @type {Function}
   */ this . _hashCode = hashCode ; /**
   * The options to be used to generate the hash code for the value.
   *
   * @public
   * @type {Nevis~HashCodeOptions}
   */ this . options = { allowCache : options . allowCache !== false , filterProperty : options . filterProperty != null ? options . filterProperty : function ( ) { return true ; } , ignoreHashCode : Boolean ( options . ignoreHashCode ) , ignoreInherited : Boolean ( options . ignoreInherited ) , ignoreMethods : Boolean ( options . ignoreMethods ) } ; /**
   * The string representation of the value whose hash code is to be generated.
   *
   * This is generated using <code>Object.prototype.toString</code> and is intended to be primarily used for more
   * specific type-checking.
   *
   * @public
   * @type {string}
   */ this . string = Object . prototype . toString . call ( value ) ; /**
   * The type of the value whose hash code is to be generated.
   *
   * This is generated using <code>typeof</code> and is intended to be primarily used for simple type-checking.
   *
   * @public
   * @type {string}
   */ this . type = typeof value ; /**
   * The value whose hash code is to be generated.
   *
   * @public
   * @type {*}
   */ this . value = value ; }
Contains the value for which a hash code is to be generated as well string representation and type of the value which
can be checked elsewhere for type-checking etc.

@param {*} value - the value whose hash code is to be generated
@param {Function} hashCode - a reference to {@link Nevis.hashCode} which can be called within a
{@link HashCodeGenerator}
@param {?Nevis~HashCodeOptions} options - the options to be used (may be <code>null</code>)
@protected
@constructor
Contains the value for which a hash code is to be generated as well string representation and type of the value which can be checked elsewhere for type - checking etc .