public void inform(IndexSchema schema) {
    FieldType doubleType = schema.getFieldTypeByName(doubleFieldName);
    if (doubleType == null) {
      throw new RuntimeException("Can not find double: " + doubleFieldName);
    }
    if (!(doubleType instanceof TrieDoubleField)) {
      throw new RuntimeException("double must be TrieDoubleField: " + doubleType);
    }

    // Just set these, delegate everything else to the field type
    int p = (INDEXED | TOKENIZED | OMIT_NORMS | OMIT_TF_POSITIONS);
    List<SchemaField> fields = new ArrayList<SchemaField>(schema.getFields().values());
    for (SchemaField sf : fields) {
      if (sf.getType() == this) {
        String name = sf.getName();
        schema
            .getFields()
            .put(
                name + TwoDoublesFieldInfo.SUFFIX_X,
                new SchemaField(name + TwoDoublesFieldInfo.SUFFIX_X, doubleType, p, null));
        schema
            .getFields()
            .put(
                name + TwoDoublesFieldInfo.SUFFIX_Y,
                new SchemaField(name + TwoDoublesFieldInfo.SUFFIX_Y, doubleType, p, null));
      }
    }

    TrieField df = (TrieField) doubleType;
    NumericFieldInfo info = new NumericFieldInfo();
    info.setPrecisionStep(df.getPrecisionStep());
    info.store = true; // TODO properties &...

    spatialStrategy = new TwoDoublesStrategy(ctx, info, FieldCache.NUMERIC_UTILS_DOUBLE_PARSER);
    spatialStrategy.setIgnoreIncompatibleGeometry(ignoreIncompatibleGeometry);
  }