code: public void start(Map<String, Object> options) {
          MethodCallFilter methodFilter = new MethodCallFilter();
          ThreadRunFilter threadFilter = new ThreadRunFilter();
          Map<String, Object> opts = new HashMap(defaultOptions);
          opts.putAll(options);
          methodFilter.addIncludes((List) opts.get("includeMethods"));
          methodFilter.addExcludes((List) opts.get("excludeMethods"));
          threadFilter.addIncludes((List) opts.get("includeThreads"));
          threadFilter.addExcludes((List) opts.get("excludeThreads"));
          
          if (interceptor == null) {
              this.interceptor = new CallInterceptor(methodFilter, threadFilter);
          }
  
          proxyMetaClasses();
          List<Reference> refs = (List) opts.get("references");
          if (refs != null) {
              proxyPerInstanceMetaClasses(refs);
          }
      }
docs: Starts profiling with the specified options.
  @param options
  <ul>
  <li>includeMethods a method name to be included.</li>
  <li>excludeMethods a method name to be excluded.</li>
  <li>includeThreads a thread name to be included.</li>
  <li>excludeThreads a thread name to be excluded.</li>
  </ul>