code: public Expression accessor(final Expression owner) {
      checkState(!isStatic());
      checkArgument(owner.resultType().equals(this.owner().type()));
      Features features = Features.of();
      if (owner.isCheap()) {
        features = features.plus(Feature.CHEAP);
      }
      if (!isNullable()) {
        features = features.plus(Feature.NON_NULLABLE);
      }
      return new Expression(type(), features) {
        @Override
        protected void doGen(CodeBuilder mv) {
          owner.gen(mv);
          mv.getField(owner().type(), FieldRef.this.name(), resultType());
        }
      };
    }
docs: Returns an accessor that accesses this field on the given owner.