name: object_metas
pipes: []
objects:
  - ty: Bar
    fields:
      - name: bar1
        ty: Integer
      - name: bar2
        ty: String
  - ty: ProjectedBar
    metas:
      - derives: [Clone, Debug, Project]
      - project: 
          input: 
            Object: Bar
    fields:
      - name: bar1
        ty: Integer
        metas:
          - project:
              from: bar1
      - name: bar2
        ty: String
        metas:
          - project:
              expr: "b.bar2"
              alias: "b"
  - ty: FilteredBar
    metas:
      - derives: [Clone, Debug, Filter]
      - filter:
          predicate: "b.bar1 > 3"
          alias: b
    fields:
      - name: bar1
        ty: Integer
  - ty: TopBar
    metas:
      - derives: [Clone, Debug, AggregateAs]
      - agg: Top
    fields:
      - name: bar1
        ty: Integer
  - ty: HashedBar
    metas:
      - derives: [Clone, Debug, HashedBy]
    fields:
      - name: bar1
        ty: Integer
        metas:
          - tag: Hash