function bind(candidate) {
  'use strict';
  if (typeof candidate === 'object') {
    for (var name in candidate) {
      var prototype  = null;
      var descriptor = null;
      do {
        prototype  = Object.getPrototypeOf(prototype || candidate);
        descriptor = Object.getOwnPropertyDescriptor(prototype, name);
      } while (prototype && !(descriptor));
      bindDescriptor(descriptor, candidate);
      Object.defineProperty(candidate, name, descriptor);
    }
  }
  return candidate;
}
/**
 * <p>Bind all methods and accessors of the given candidate to itself (in-place) and return the candidate.</p>
 * @param {object} candidate An instance with a prototype
 * @returns {object} The given candidate
 */
Bind all methods and accessors of the given candidate to itself (in-place) and return the candidate.
@param {object} candidate An instance with a prototype
@returns {object} The given candidate
Bind all methods and accessors of the given candidate to itself ( in - place ) and return the candidate . @param { object } candidate An instance with a prototype @returns { object } The given candidate
function bind(candidate) {
  'use strict';
  if (typeof candidate === 'object') {
    for (var name in candidate) {
      var prototype  = null;
      var descriptor = null;
      do {
        prototype  = Object.getPrototypeOf(prototype || candidate);
        descriptor = Object.getOwnPropertyDescriptor(prototype, name);
      } while (prototype && !(descriptor));
      bindDescriptor(descriptor, candidate);
      Object.defineProperty(candidate, name, descriptor);
    }
  }
  return candidate;
}
function bind ( candidate ) { 'use strict' ; if ( typeof candidate === 'object' ) { for ( var name in candidate ) { var prototype = null ; var descriptor = null ; do { prototype = Object . getPrototypeOf ( prototype || candidate ) ; descriptor = Object . getOwnPropertyDescriptor ( prototype , name ) ; } while ( prototype && ! ( descriptor ) ) ; bindDescriptor ( descriptor , candidate ) ; Object . defineProperty ( candidate , name , descriptor ) ; } } return candidate ; }
<p>Bind all methods and accessors of the given candidate to itself (in-place) and return the candidate.</p>
 @param {object} candidate An instance with a prototype
 @returns {object} The given candidate
<p > Bind all methods and accessors of the given candidate to itself ( in - place ) and return the candidate . < / p > @param { object } candidate An instance with a prototype @returns { object } The given candidate