docs: function extendOptions() {
  
              if (!(options instanceof Object)) {
                  options = {};
              }
  
              var tpmOptions = Object.preventExtensions($.extend(true, {}, _options));
  
              for (var method in options) {
  
                  if (!options.hasOwnProperty(method) || method === "debug") {
                      continue;
                  }
  
                  if (~["labels", "messages", "rules"].indexOf(method) && options[method] instanceof Object) {
                      tpmOptions[method] = options[method];
                      continue;
                  }
  
                  if (!_options[method] || !(options[method] instanceof Object)) {
  
                      // {debug}
                      options.debug && window.Debug.log({
                          'node': node,
                          'function': 'extendOptions()',
                          'arguments': '{' + method + ': ' + JSON.stringify(options[method]) + '}',
                          'message': 'WARNING - ' + method + ' - invalid option'
                      });
                      // {/debug}
  
                      continue;
                  }
  
                  for (var type in options[method]) {
                      if (!options[method].hasOwnProperty(type)) {
                          continue;
                      }
  
                      if (!_options[method][type] || !(options[method][type] instanceof Object)) {
  
                          // {debug}
                          options.debug && window.Debug.log({
                              'node': node,
                              'function': 'extendOptions()',
                              'arguments': '{' + type + ': ' + JSON.stringify(options[method][type]) + '}',
                              'message': 'WARNING - ' + type + ' - invalid option'
                          });
                          // {/debug}
  
                          continue;
                      }
  
                      for (var option in options[method][type]) {
                          if (!options[method][type].hasOwnProperty(option)) {
                              continue;
                          }
  
                          if (_supported[method] &&
                              _supported[method][type] &&
                              _supported[method][type][option] &&
                              $.inArray(options[method][type][option], _supported[method][type][option]) === -1) {
  
                              // {debug}
                              options.debug && window.Debug.log({
                                  'node': node,
                                  'function': 'extendOptions()',
                                  'arguments': '{' + option + ': ' + JSON.stringify(options[method][type][option]) + '}',
                                  'message': 'WARNING - ' + option.toString() + ': ' + JSON.stringify(options[method][type][option]) + ' - unsupported option'
                              });
                              // {/debug}
  
                              delete options[method][type][option];
                          }
  
                      }
                      if (tpmOptions[method] && tpmOptions[method][type]) {
                          tpmOptions[method][type] = $.extend(Object.preventExtensions(tpmOptions[method][type]), options[method][type]);
                      }
                  }
              }
  
              // {debug}
              if (options.debug && $.inArray(options.debug, _supported.debug !== -1)) {
                  tpmOptions.debug = options.debug;
              }
              // {/debug}
  
              // @TODO Would there be a better fix to solve event conflict?
              if (tpmOptions.dynamic.settings.trigger) {
                  if (tpmOptions.dynamic.settings.trigger === "keypress" && tpmOptions.submit.settings.clear === "keypress") {
                      tpmOptions.dynamic.settings.trigger = "keydown";
                  }
              }
  
              options = tpmOptions;
  
          }