public Accessor optimizeAccessor(ParserContext pCtx, char[] property, int start, int offset, Object staticContext,
                                   Object thisRef, VariableResolverFactory factory, boolean root, Class ingressType) {
    time = System.currentTimeMillis();

    if (compiledInputs == null) compiledInputs = new ArrayList<ExecutableStatement>();

    this.start = cursor = start;
    this.end = start + offset;
    this.length = end - this.start;

    this.first = true;
    this.val = null;

    this.pCtx = pCtx;
    this.expr = property;
    this.ctx = staticContext;
    this.thisRef = thisRef;
    this.variableFactory = factory;
    this.ingressType = ingressType;

    if (!noinit) _initJIT();
    return compileAccessor();
  }