docs: function parseMembers(params, constructor, isFinal) {
          var key,
              value,
              cache = {};
  
          if (hasOwn(params, '$statics')) {
              for (key in params.$statics) {
                  value = params.$statics[key];
  
                  if (isFunction(value) && !value[$class] && !value[$interface]) {
                      insert(constructor[$class].staticMethods, key);
                      constructor[key] = wrapMethod(key, value, constructor, true);
                  } else {
                      constructor[$class].staticProperties[key] = value;
                      constructor[key] = value;
                  }
              }
  
              delete params.$statics;
          }
  
          // Save certain keywords in the cache for the loop bellow to work faster
          if (hasOwn(params, '$implements')) {
              cache.$implements = params.$implements;
              delete params.$implements;
          }
  
          if (hasOwn(params, '$abstracts')) {
              cache.$abstracts = params.$abstracts;
              delete params.$abstracts;
          }
  
          for (key in params) {
              value = params[key];
  
              if (isFunction(value) && !value[$class] && !value[$interface]) {
                  constructor.prototype[key] = wrapMethod(key, value, constructor);
  
                  // If the function is specified to be bound, add it to the binds
                  if (value[$bound]) {
                      insert(constructor[$class].binds, key);
                      delete value[$bound];
                  }
  
                  // We should remove the key here because a class may override from primitive to non primitive,
                  // but we skip it because the clone already handles it
              } else {
                  constructor.prototype[key] = value;
  
                  if (!isImmutable(value)) {
                      insert(constructor[$class].properties, key);
                  }
              }
          }
  
          // Restore from cache
          mixIn(params, cache);
      }