public static ScriptEnvironment<ProcessFeature> description(Root root) {
      return root.description()
        .forInput(ProcessFeature.class)
        .withDeclarations(
          Decls.newVar(FEATURE_TAGS, Decls.newMapType(Decls.String, Decls.Any)),
          Decls.newVar(FEATURE_ID, Decls.Int),
          Decls.newVar(FEATURE_SOURCE, Decls.String),
          Decls.newVar(FEATURE_SOURCE_LAYER, Decls.String),
          Decls.newVar(FEATURE_OSM_CHANGESET, Decls.Int),
          Decls.newVar(FEATURE_OSM_VERSION, Decls.Int),
          Decls.newVar(FEATURE_OSM_TIMESTAMP, Decls.Int),
          Decls.newVar(FEATURE_OSM_USER_ID, Decls.Int),
          Decls.newVar(FEATURE_OSM_USER_NAME, Decls.String),
          Decls.newVar(FEATURE_OSM_TYPE, Decls.String),
          Decls.newVar(FEATURE_GEOMETRY, GeometryVal.PROTO_TYPE)
        );
    }
Context available when processing an input feature.

@param feature          The input feature being processed
@param tagValueProducer Common parsing for input feature tags
planetiler-custommap/src/main/java/com/onthegomap/planetiler/custommap/Contexts.java